memcached

✍ dations ◷ 2025-11-19 10:43:03 #开放源代码,电脑内存,键-值数据库

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内的信息:

相关

  • 碳头孢烯碳头孢烯(英语:Carbacephems)是一类合成的头孢菌素类抗生素,和头孢烯结构上类似,不过5号位置由亚甲基取代了原来的硫原子。碳头孢烯类抗生素通过抑制细胞壁合成来抑制细菌。羧基
  • 组 (拉丁语:Sectio 英语:Section)是一个植物学生物分类等级。处于属以下,种以上 。如果存在亚属,则组低于亚属。如果存在系,则系在组之下。 部分组又可以再分成亚组。组通常用来帮
  • 初级颗粒嗜苯胺颗粒(azurophil,或Azurophilic granule)是一种苯胺染色下产生的构造。在勃艮地染色法和梅洛染色法下的白血球和染色质会成现天青色。嗜苯胺颗粒可能会含有髓过氧化物酶、
  • 攻击行动2013年纳萨尔派达尔巴丛林袭击(2013 Naxal attack in Darbha valley)指2013年5月25日,印度共产党(毛主义)所领导的武装于印度恰蒂斯加尔邦的苏克玛区(英语:Sukma)、针对印度国民大会
  • 美国国家税务局国家税务局(Internal Revenue Service)是美国联邦政府的税务机构,隶属于美国财政部,受国税局局长的直接领导。国税局局长由美国总统任命,一届任期为五年。国税局负责征收税款以及
  • 上海乐谷上海乐谷,全称上海乐谷信息技术有限公司,原名新浪乐谷,于2003年创立。2003年1月8日,新浪和NCsoft对外宣布成立合资公司新浪乐谷,在中国大陆正式推出《天堂》。2004年2月,新浪乐谷
  • 犹太新年犹太新年(希伯来语: ראש השנה‎ ro'sh ha-shānāh,岁首的意思)是提斯利月(希伯来历:Tishrei)教历七月、民历首月的首日,是人、动物和具法律效力文件的新年,同时纪念上帝创造
  • 明古鲁明古鲁省(印尼文:Provinsi Bengkulu)是印尼在苏门答腊岛上的十个省份之一。省城为明古鲁市。面积19,788.70平方公里。人口1,405,060(2000年统计数字。)明古鲁曾经是英国的殖民地,
  • 材料性质 (热力学)热力学上的“材料性质”一词指某种给定材料的内禀性质,它们多与热力学势的二阶偏导数有着直接联系。对于一个简单的单组分系统,常见的材料性质有:以上各式中,
  • 瑞典电视台24频道瑞典电视台24频道(瑞典语:SVT24)是瑞典电视台一条于1999年开播的电视频道,主要播放新闻、时事和娱乐节目,以及在周末播出体育赛事。这条频道与瑞典电视台儿童频道共用一条频道,而