memcached

✍ dations ◷ 2025-07-23 20:42:44 #开放源代码,电脑内存,键-值数据库

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

相关

  • 何国威何国威(1963年3月-),出生于上海市,籍贯湖北沙市,中国流体力学家。1983年8月毕业于西北工业大学应用数学与力学专业。现工作单位为中国科学院力学研究所,2017年当选中国科学院院士。
  • 古越语古越语是古代于越人的语言,春秋时期通行于吴、越两国,与当时附近楚及中原诸国言语不同。语言学研究表明,古越语可能属于侗台语系,与现代的侗语、壮语、泰语等关系较近;但也有研究
  • 少精液症少精液症(Hypospermia)是指男性在射精时,精液量少于1.5 ml的症状,和精液过剩症是相反的症状。少精液症和少精子症(英语:oligospermia)不同,后者是指精子计数太低的症状。男性正常情
  • BTCBTC可以指:
  • 抗高血脂药降血脂药(英语:Hypolipidemic agents),又称调血脂药或antihyperlipidemic agents、lipid-lowering drugs,是一类用来治疗高脂血症的药物。常用的降血脂药有两大类,分别为他汀类药
  • 虾米音乐虾米音乐是中国一个的以提供MP3格式音乐的推荐、发布、P2P下载服务,以及线下音乐活动等互动内容的网站。2013年被阿里巴巴集团全资收购,现时为阿里巴巴旗下网站。2019年,与广洲
  • 卡哈罗莱乌帕齐拉卡哈罗莱(孟加拉语:কাহারোল,Kaharole)是孟加拉国的一个乌帕齐拉,位于朗布尔专区的迪纳杰布尔县。卡哈罗莱乌帕齐拉共有户数22448户。据1991年孟加拉国人口普查(英语:1991 Ba
  • .hack系列角色列表以下名称大部分以台湾角川所翻译的版本,其他以网络上常用的板本
  • 弗里曼·戴森弗里曼·约翰·戴森(英语:Freeman John Dyson,1923年12月15日-2020年2月28日),美籍英裔数学物理学家,普林斯顿高等研究院教授。戴森提出了戴森变换。1923年12月15日,戴森在英国伯克
  • 吕梁站吕梁站位于山西省吕梁市离石区上安村,是太中银铁路的一座车站,办理客货运业务,现由太原铁路局太原车务段管辖,等级为二等站。车站主站房占地5906平方米,设计层高为二层,候车厅可容