memcached

✍ dations ◷ 2025-12-08 04:44:26 #开放源代码,电脑内存,键-值数据库

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

相关

  • 起始密码子起始密码子(英语:Start Codon)是指定信使RNA(mRNA)上开始合成蛋白质的密码子,也是第一个被核糖体翻译的mRNA上的密码子。起始密码子位于编码区内,紧邻5′非翻译区(原核生物的核糖体
  • 北里大学北里大学(日语:北里大学/きたさとだいがく Kitasato daigaku;英语译名:Kitasato University),是本部位在东京都港区的小型私立大学,1962年设校,简称北里、北里大,该大学专攻医学及生
  • ETtoday 东森新闻云ETtoday新闻云为台湾社群新闻网站,由东森新媒体控股股份有限公司经营。该网站前身为2000年至2008年3月的《东森新闻报》。2008年4月,《东森新闻报》被转售予中华联合电讯集团(
  • 突破英国 美国 波兰西军 新西兰 英属印度 南非共和国 巴西葡萄弹行动(英语:Operation Grapeshot)是盟军的美国第5军团及英国第8军团进攻伦巴第平原,攻势开始于1945年4月6日(接着数星
  • 济公济公(1130年(建炎三年)二月初二日-1209年(嘉定二年)五月十六日),法号道济,又称济癫和尚、济公活佛、济公禅师,俗名李修缘(一名李心远),南宋时期台州(今浙江省台州市天台县赤城街道永宁村)人
  • 高考高考可以指:
  • 近代希腊希腊近现代史从19世纪初的希腊独立战争(Greek War of Independence,1821-1829)开始,直至当代,共200年的时间。希腊近现代史先后包含了如下时期:希腊独立战争(1821-1829)、希腊第一共
  • 香料 (消歧义)香料可以指:具有挥发性的芳香物质的总称。分为天然香料和人造香料,用于制造化妆品、食品等。 又特指:
  • 图莱里县图莱里县(Tulare County)是美国加利福尼亚州中央谷地内的一个县,面积12,533.2平方公里。根据2010年人口普查,本县共有人口368,021人。本县县治为维塞利亚。本县成立于1852年,县名
  • 为公众利益为公众利益(拉丁语:pro bono publico,英语:for the public good、常常缩写为“pro bono”;公益服务)是拉丁语短语,指的是志愿提供专业服务,不收取任何报酬。和传统意义上的志愿服务