Memcached是高性能,分布式内存对象key-value缓存系统。一般使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
连接
通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务
telnet HOST PORT
存储命令
- set:如key已存在,会更新
- add:如key已存在,不会更新(过期的会)
- replace:替换已存在 key的 value。如果 key 不存在,则替换失败
- append:向已存在 key的 value后面追加数据
- prepend:向已存在 key的 value前面追加数据
- CAS:仅当最后一次取值后,值没被其他客户端修改, 才能写入
参数:
命令 key flags exptime bytes unique_cas_token [noreply] value
- key:键值 key-value 结构中的 key,用于查找缓存值。
- flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。
- exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
- bytes:在缓存中存储的字节数
- noreply(可选): 该参数告知服务器不需要返回数据
- value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value)
查找命令
- get:获取 value ,如果 key 不存在,则返回空
- gets:获取CAS value,如果 key 不存在,则返回空
- delete:删除已存在的 key
- incr/decr:对已存在的 key的数字值自增或自减
统计命令
- stats:返回统计信息
- stats items:显示各个 slab 中 item 的数目和存储时长
- stats slabs:显示各个slab的信息
- stats sizes:显示所有item的大小和个数
- flush_all:清理缓存中所有键值对
Java 使用
三种常用Java客户端
- memcached client for java: 较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定,使用阻塞IO,不支持CAS操作。
- Spymemcached:基于nio,存取速度高,稳定性不好,支持CAS操作。
- XMemcached:基于NIO,高性能,支持完整的协议,支持客户端分布,允许设置节点权重,动态增删节点,支持JMX,与Spring框架的集成