memcached

✍ dations ◷ 2025-12-11 05:21:49 #开放源代码,电脑内存,键-值数据库

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

相关

  • 阿富汗伊斯兰共和国总统阿富汗总统,是现在阿富汗的国家元首兼政府首脑。阿富汗的共和制度是间断不连续的,只有在1973年至1992年间(阿富汗共和国及阿富汗民主共和国时期)和2001年后才算是共和制的国家,而
  • 叶赫那拉叶赫那拉氏(满语:ᠶᡝᡥᡝ ᠨᠠᡵᠠᡥᠠᠯᠠ,转写:Yehe Nara hala)是满洲著姓那拉氏的主要分支之一,为海西女真叶赫贝勒的家族姓氏,其始祖为蒙古人星根达尔汉(满语:ᠰᡳᠩᡤᡝᠨᡩᠠ
  • 南蒂罗尔考古博物馆南蒂罗尔考古学博物馆(德语:Südtiroler Archäologiemuseum; 意大利语:Museo archeologico dell'Alto Adige)是意大利北部南蒂罗尔首府博尔扎诺一个专业的考古学博物馆。博物馆
  • 朝鲜八道朝鲜八道是朝鲜王朝时期朝鲜的一级行政区划,也是现时朝韩的行政区划基础。朝鲜八道于太宗13年(1413年)划全国为京畿、江原、庆尚、忠清、全罗、平安、咸镜与黄海八道。朝鲜高宗
  • 凌鸿勋凌鸿勋(1894年4月15日-1981年8月15日),字竹铭,广东省番禺县人,原籍江苏省常熟县,铁道工程学家。他幼年熟读四书五经,1910年以官费生考入邮传部上海高等实业学堂 (1911年改名南洋大学
  • 罗德岛州罗得岛州(Rhode Island)(i/ˌroʊd -/, like road),正式名称为罗得岛与普罗维登斯庄园州(英语:State of Rhode Island and Providence Plantations)是美国面积最小的一个州,也是美
  • 烽火台烽堠又称墩堠、瞭望台、瞭望塔、望楼、监视塔、烽火台,是高耸而可以供人瞭望周围环境的塔楼式建筑。中国明代墩堠备有草材(作用如烽火台)、大铳、黑旗、白旗、灯笼等等。
  • 乌尔米河乌尔米河是俄罗斯的河流,位于哈巴罗夫斯克边疆区,与库尔河汇合成为属于黑龙江左支流的通古斯卡河,河道全长458公里,流域面积15,000平方公里。
  • 公合公合,亦称分升,是容量计量单位。符号为 dL。1公合=0.1升=100毫升。立方尧米、立方佑米(Ym3) 立方泽米、立方皆米(Zm3) 立方艾米(Em3) 立方拍米(Pm3) 立方垓米、立方太米(Tm3)立
  • 2mm蜂鸟手枪2毫米蜂鸟手枪(其弹药也被称为 2.7毫米蜂鸟或 2.7×9毫米蜂鸟)是世界上最小的中央式底火手枪,由弗朗兹·凡尔(英语:Franz_Pfannl)于1910年设计及取得专利,并于1914年在奥地利钟表匠