memcached

✍ dations ◷ 2025-06-08 03:03:16 #开放源代码,电脑内存,键-值数据库

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

相关

  • 帝国自由城市帝国自由城市(free and imperial cities (德语: Freie und Reichsstädte))是神圣罗马帝国中的一种特殊行政区划,帝国自由城市的城市不被任何一个帝国贵族管辖,其直辖于神圣罗马
  • 骷髅骷髅或者髑髅、骸骨是已死的动物或人腐化或被吃剩的骨头,经常是死的象征,常被化身为死神或鬼的形像,也被当作材料,制成骨器。骨头常是坚硬的象征,也是人有气节的具体拟物化即“骨
  • 协同物种形成协同物种形成指不同物种间平行的物种形成过程。寄生虫与寄主之间通常有很紧密的关系,它们无法离开寄主太久,终身生活于寄主身上或体内;而且有高度专一性,一种寄生虫只寄生于某种
  • 康厄安群岛康厄安群岛是印度尼西亚群岛的一部分,面积668平方公里,位于巴厘岛以北120公里和马都拉岛以东120公里的爪哇海,是东爪哇省苏民纳县的一部分。康厄安群岛最大的岛屿面积约490平方
  • 宇宙年表宇宙年代学,或宇宙年表依据大爆炸之宇宙论描述宇宙的历史和未来,目前的宇宙如何由普朗克时期随着时间演化的科学模式,使用宇宙的共动坐标系时间参数。宇宙膨胀的模型即是所知的
  • 圣母教堂 (德累斯顿)德累斯顿圣母教堂(Dresdner Frauenkirche)是德国萨克森州首府德累斯顿的一座路德会教堂。该处原址早期的教堂建筑是罗马天主教教堂,直到宗教改革期间被改为新教徒教堂,并在18世
  • 距骨距骨是跗骨的近侧骨之一,在踝部与小腿骨(腓骨、胫骨)相关节的骨。位于足根骨之上。距骨上没有附着任何肌肉,是全身骨骼中的唯一特例。古人会拿羊或猪的距骨作为掷距骨游戏。Late
  • 瑞隆路匝道瑞隆路匝道,正式名称为瑞隆路出口匝道,或俗称瑞隆路交流道,为台湾国道一号的交流道,指标为369k,位于高雄市凤山区近前镇区交界,仅设南下出口,连络道路为瑞隆东路,于2003年1月10日启
  • O'FREEO'FREE(日语:オフリー)是一种日本的砖包(日语:ブリックパック)饮料产品,1990年代由雪印乳业推出。这是雪印乳业于1990年3月开始销售的一系列饮料。该饮料使用的包装均为砖包(日语:ブ
  • 中嘉网路中嘉网路股份有限公司(英语:China Network Systems Co., Ltd.),简称中嘉、中嘉网路、CNS、中嘉集团,是台湾的一家有线电视多系统业者(MSO)及互联网供应商(ISP)。中嘉网路的有线电视订