memcache 内部原理实现
Lazy Expiration
memcached 内部不会监视记录是否过期,而是在 get 时查看记录的时间戳,检查记录是否过期。这
种技术被称为 lazy(惰性)expiration。因此,memcached 不会在过期监视上耗费 CPU 时间。
LRU( Least Recently Used 最近少使用):
从缓存中有效删除数据的原理
memcached 优先使用已超时的记录的空间,但即使如果也会发生空间不够用的情况,这时就要用LRU策略进制进行空间分配
从最近未被使用的记录中搜索,并将空间分配给新的记录
指定 -M 参数禁用LRU,内存写满后会返回错误 memcached 毕竟不是存储器,而是缓存,所以推荐使用 LRU
分布式算法:
memcached的分布式算法是在客户端实现的,当一个key确定的时候也就确定了他要存储的mc节点
算法:crc32(key)/n key为要缓存的键,n为链接的服务器节点数
优点:余数计算的方法简单,数据的分散性也相当优秀
缺点:当添加或移除服务器时,余数就会产生巨变,从而影响缓存的命中率。
解决方案:
一致性 hash 算法(Consistent Hashing)
首先计算出节点的hash值,分布到 0~2^32的园上,然后用同样的方法求出存储数据的键的hash值,并映射到圆上
从映射位置开始顺时针开始查找,首次遇到的服务器则为要存储的节点,如果超过后仍找不到则放到 第一台节点上
采用这种算法,当增加或减少服务器时只有很少的部分key会受到影响
虚拟节点:当节点数非常少时,分布会不均匀,可以把节点放大几百倍,然后一个节点对应多个虚拟虚拟解决,会达到同样的效果
Memcached、Key-Value Store 、Bittorrent DHT、LVS中都采用了Consistent Hashing算法
http://blog.csdn.net/sparkliang/article/details/5279393
todo
memcache 内部原理实现的更多相关文章
- memcache的原理和命中率的总结
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt267 1 Memcache是什么Memcache是danga.c ...
- [转]Memcache的原理和命中率的总结
From : http://blog.csdn.net/hbzyaxiu520/article/details/19546969 1 Memcache是什么Memcache是danga.c ...
- 深入理解javascript作用域系列第一篇——内部原理
× 目录 [1]编译 [2]执行 [3]查询[4]嵌套[5]异常[6]原理 前面的话 javascript拥有一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量,这套规则被称为作用域.作用域 ...
- Android线程管理(三)——Thread类的内部原理、休眠及唤醒
线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...
- 【转】SQLServer内部原理
原文地址:http://twb.iteye.com/blog/182083 在讲SQLSERVER内部原理的之前,我觉得非常有必要向大家介绍一下SQLSERVER的历史. 让我们站在1999年,看看计 ...
- asp.net内部原理3
asp.net内部原理(三) 第三个版本 (最详细的版本) 前言: 今天继续吧这个系列补齐,这几天公司的项目比较忙,回到家已经非常的累了,所以也没顾得上天天来这里分享一些东西和大家一起探讨,但是今天晚 ...
- jquery ready方法实现原理 内部原理
jquery ready方法实现原理 内部原理 今天闲来无事研究研究jquery.ready()的内部实现,看JQ的源码一头雾水,由于自己很菜了,于是翻了翻牛人的播客,讲述详细,收获颇多. 先普及一下 ...
- ElasticSearch 学习记录之集群分片内部原理
分片内部原理 分片是如何工作的 为什么ES搜索是近实时性的 为什么CRUD 操作也是实时性 ES 是怎么保证更新被持久化时断电也不丢失数据 为什么删除文档不会立即释放空间 refresh, flush ...
- Git详解之九:Git内部原理
Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ...
随机推荐
- javascript多重继承
function employee(name, job, born) { this.name = name; this.job = job; this.born = born;} function h ...
- http://www.allthingsdistributed.com
http://www.allthingsdistributed.com159-6289-2518
- PgSQL · 特性分析 · 谈谈checkpoint的调度
在PG的众多参数中,参数checkpoint相关的几个参数颇为神秘.这些参数与checkpoint的调度有关,对系统的稳定性还是比较重要的,下面我们为大家解析一下,这要先从PG的数据同步机制谈起. P ...
- asp.net脚本获取不到id,服务器控件id生成html页面id控制
在配置文件里修改id的生成方式.经过搜索发现是因为使用Sharpmap而在Web.config中加入的一句配置造成的影响. <pages controlRenderingCompatibilit ...
- MyEclipse配置Resin启动报错问题
错误信息如下: com.caucho.config.ConfigException: -server 'default' is an unknown server in the configurati ...
- mybatis 中的稍微复杂些的sql语句
mybatis 中的稍微复杂些的sql语句: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP ...
- java.lang.NoSuchMethodError: 属于jar包冲突
今天测试接口,出错:java.lang.NoSuchMethodError: org.apache.http.entity.mime.content.StringBody.<init>(L ...
- Jfinal中定时器的初步探索(二)
第一篇中增加的是程序代码的实现,本篇我们将通过配置文件进行定时器的配置,减少代码量,提高灵活性. 1.需要用到的文件:quartz.properties,据说这个文件如果没有的话,按默认的走,结果布署 ...
- win7下MariaDB10.0的my.ini配置文件的位置
msi版本的,安装后在安装目录下的\data\my.ini 常用的配置选项: 1.修改默认的存储引擎 在配置文件my.ini(linxu下为my.cnf) 中的 [mysqld] 下面加入defaul ...
- CSS控制checkbox样式
原文地址:http://www.xiumu.org/technology/style-checkboxes-with-css.shtml#comments Checkbox复选框是一个可能每一个网站都 ...