一、基本概念
Memcached:是一个免费开源的、高性能的、具有分布式内存对象的缓存系统,它通过减轻数据库负载加速动态Web应用;
特性:
√本质上就是一个内存key-value缓存;
√协议简单,使用的是基于文本行的协议;
√不支持数据的持久化,服务器关闭之后数据全部丢失;
√ Memcached简洁而强大,便于快速开发,上手较为容易;
√互不通信的Memcached之间具有分布特征;
√没有安全机制
二、基本操作
add key flag(标记数字) explain(过期时间,0代表不过期) bytys(value长度) value
例 add key1 0 0 3 abc
add新增、replace 更新、set如果有key为跟新、没有key为新增
prepend 向前追加、append向后追加
get key 获取值、gets key 获取值和版本号、cas加版本号的更新
delete 删除、incr/decr 已存在键的增减 incr key num
三、常用java客户端
四、数据分布
有几种策略
1、普通hash算法,jdk的string.hash
2、crc32算法
3、一致性hash,通过虚拟节点解决数据分配不均匀问题
五、内存模型
slab内存模型,内存被拆分成多个slabclass,每个slabclass中有多个slab 每个slab=1M;每个slab下有多个大小相同的chunk,不同slab下的chunk大小不同,数据存储在chunk中。
有一个增长因子,用来控制slab中的chunk大小递增倍数