Memcached分布式缓存
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
memcached存储两种形式的数据:key-val数据和sql数据
为了防止内存碎片化,使用slab-allocator来分配存储空间。可以看到很多个相同大小的chunck组成一个slab class。
同时采用了惰性的回收机制,记录超时之后,不会释放已经分配的内存,只是客户端看不到该记录,该内存可以重复使用。不需要在过期监视上耗费CPU时间。
Memcached替换策略:
- 优先替换超时的内存
- 如果还存在空间不足的情况,使用LRU机制来替换已有的缓存内容。
Memcached分布式:
Memcached只是web缓存,减少数据库的读取次数,Memcached本身不具有“分布式的功能”,分布式完全又客户端程序库实现。
Memcached采用一致性哈希(consistent hash)算法来进行分布式处理
- 求出服务器节点的hash,映射到0~232的圆上
- 用同样的方法求出存储数据键的hash值,映射到圆上
- 从数据映射到的位置开始顺时针查找,将数据保存在第一台服务器上。
- 如果超过232仍然找不到服务器,就保存在第一台服务器上。