memcached

✍ dations ◷ 2025-10-22 02:04:25 #开放源代码,电脑内存,键-值数据库

memcached是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开放源代码软件,以BSD license授权发布。

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。

memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据。

将纯粹使用数据库查询的代码加上memcached支持是很简单的,假设这是原来的代码:

function get_foo (int userid) {   result = db_select("SELECT * FROM users WHERE userid = ?", userid);   return result;}

加上memcached的缓存机制后:

function get_foo (int userid) {    result = memcached_fetch("userrow:" + userid);    if (!result) {        result = db_select("SELECT * FROM users WHERE userid = ?", userid);        memcached_add("userrow:" + userid,  result);    }    return result;}

上述的程序会先到memcached检查是否有userrow:userid的数据,如果有则直接传回结果,如果不存在时再去数据库查询,并将结果放到memcached内。

在memcached内已经有缓存信息时将数据库的数据更新后,上述的程序会抓到旧的数据,这是属于Cache coherency的问题。其中一种解决的方法是在更新数据库时,同时更新memcached内的信息:

相关

  • 唐菖蒲唐菖蒲(学名:Gladiolus gandavensis)为鸢尾科唐菖蒲属下的一个种,俗称剑兰。
  • 麻风麻风病(英语:Leprosy),又作麻疯、癞病、疠风,医学领域称为汉生病或韩森氏病(英语:Hansen's Disease),是由麻风杆菌与弥漫型麻风分枝杆菌引起的一种慢性传染病,主要经由飞沫传染但传染
  • Yale University Press耶鲁大学出版社是美国耶鲁大学的大学出版社(英语:university press)。它于1908年由 George Parmly Day 创建, 在1961年成为耶鲁大学的官方部门,但财政和运作自主。截至2009年,耶鲁
  • 119年印度塞人王朝西娑多婆王朝(英语:Western Satraps)国王纳哈巴纳(英语:Nahapana)(119年-124年在位)即位,他攻击案达罗国并吞并了南拉杰普塔纳(Rajputana)。
  • 浮游动物浮游动物属于浮游生物的一类,通常为异营生物。与其他的浮游生物一样,它们漂浮在水面上,因而得名。它们通常都是小型的原生动物,但也包括一些较大型动物的幼体,以浮游细菌、浮游植
  • 五国部五国部即剖阿里国、奥里米国、越里笃国、盆奴里国、越里吉国。是辽、金时期五个互不统属的生女真的部落的统称。这其中的汉字“国”字,在辽金时期指代一个部族,而非今天“国家
  • 布衣百姓,字面意为一百个姓氏,引申指一般平民,如“老百姓”、“平民百姓”。在古代,百姓常用黔布(黑布)作为头巾,故亦称黔首;而又因着麻布衣裳,又称布衣。百姓也称为闾阎,出处为《史记·平
  • 水瓶座宝瓶座(拉丁语:Aquarius,天文符号:♒),黄道带星座之一,面积979.85平方度,占全天面积的2.375%,在全天88个星座中,面积排行第十位。宝瓶座中亮于5.5等的恒星有56颗,最亮星为虚宿一(宝瓶座
  • 王船山王夫之(1619年-1692年,即万历四十七年-康熙三十一年),湖广衡阳县人,杰出的思想家、哲学家、明末清初大儒。字而农,号姜斋、又号夕堂,或署一瓢道人、双髻外史,自署船山病叟、南岳遗民,晚
  • 巴斯特人巴斯特人(英语:Basters),是纳米比亚共和国中一个由荷兰男人与布须曼人和黑人妇女混血产生的族群,说南非语。他们通常被认为是纳米比亚阿非利卡人一个次群体,更偏远的有色人。自19