memcache:
1.memcache数据访问模型:
首次访问从数据库查询,这是memcache 的模型, 我们可以通过整合spring,来实现自己的数据同步机制,
2、memcache 是相互之间乎不通信的分布式,memcache的分布式是完全基于客户端的
3、memcache内存存储机制
memcache 采用了 SLAB allocation 的机制来分配、管理内存,
SLAB 基本就是按照预先规定的大小,将分配好的内存分割成特定长度的块,来解决内存碎片问题!
SLAB 会重复使用已经分配的内存的目的,分配到的内存不会释放而是被重复利用,(注意这里的内存回收机制《内存使用完了怎么将新的内容加入到内存中》), 他有一个缺点, 就是会浪费内存空间, 例如 分配内存块 是 128 的块, 但是我们的数据只有100 ,那个28 就被浪费了!
4、memcache的删除机制
数据不会被删除, 空间会被重复利用, 它使用了LRU(最近最少使用) 的原则进行空间分配,memcache也不会监控数据是否过期,只用在客户端查询的时候才会检测数据是否过期.
5、memcache 的分布式算法
传说中的 consistent hashing
大概算法思路:
写道
将 所有的 key 通过hash映射到 从 0 到 2的32次方 -1 ,的一个闭环上,
再讲, cache服务节点映射到 这个闭环上, 然后从第一个key开始按照顺时针方式,找到了cache就将这些 key 放在这个 cache中, 然后再继续!当然具体算法比这个还要复杂!
详细的说明参考: http://younglibin.iteye.com/blog/2043761