memcached

✍ dations ◷ 2025-04-04 11:50:25 #开放源代码,电脑内存,键-值数据库

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

相关

  • 各国家或地区比例本列表根据美国中央情报局所出版之《世界概况》,列出世界各国家与地区中,成年人感染人类免疫缺乏病毒(HIV)的人口数量。表格数据都来源于《世界概况》。标注星号*意味世界概况无
  • 脑化指数脑化指数(英语:Encephalization quotient, EQ)是一个用来描述动物大脑和身体比例关系的量,即真实脑容量和预期脑容量的比值,可大致表示该动物的智力 。脑化指数和相似的脑部身体
  • 段 雪段雪(1957年1月-),北京人,中国应用化学家,现任北京化工大学应用化学系研究员,北京化工大学化工资源有效利用国家重点实验室主任。1982年毕业于吉林大学化学系,1988年获北京化工学院
  • 计亮年计亮年(1934年4月20日-),配位化学及生物无机化学专家,中国科学院院士(2003年)。现任广东省化学会理事长,中山大学教授、化学与化学工程学院院长。浙江省鄞县人,1934年出生上海市,1956
  • 鹅耳枥鹅耳枥(学名:Carpinus turczaninowii)是桦木科鹅耳枥属的植物。别名穗子榆。落叶乔木。卵形或卵状椭圆形叶片,有重锯齿,侧脉8~12对,下面沿叶脉常有长毛。春季开花,雌雄同株,葇荑花序
  • 酷热指数酷热指数(Heat Index)是一种综合空气温度和相对湿度来确定体感温度的指数──即真正感受到的热度。人体通过排出汗液来达到降温的目的,在这个过程里汗液中的水分得以蒸发并且从
  • 天使薇拉卓克《维拉·德雷克》(Vera Drake)是一套2005年的英国剧情片,由麦克·李执导,伊美黛·史道顿等主演。电影以1950年代,堕胎仍是犯法的英国为背景,描述一名工人阶级的伦敦女士帮助其他女
  • 施波尔路易斯·施波尔(德语:Louis Spohr,1784年4月5日-1859年10月22日),原名Ludwig Spohr,德国作曲家、小提琴家、指挥家。施波尔创作了大量作品,其中小提琴协奏曲的数目很是惊人。其歌剧
  • 奉天省奉天省简称奉,为满州国时期的省份之一,省域前期(1931年-1934年)大致为今日之辽宁省,中后期(1934年-1945年)相当于现今辽宁省中部的一小部分。1931年(民国20年)、九一八事变后,日本关东
  • 孔多塞投票法孔多塞制(Condorcet voting),或称,是由法国数学家与政治家孔多塞以孔多塞准则衍生的投票制度。投票者将候选人或候选的项目随自己的喜好而排名,例如第一意愿写“1”,第二意愿写“2