Memcache是一种key-value的高速缓存系统。
其工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
使用时可以用Telnet进行连接,cmd如果显示telnet无此命令,需要在控制面板中开启,具体请百度。
连接Memcached:
telnet 127.0.0.1 11211//服务ip和端口号
其命令主要分为三类:
存储命令
set
set key flags exptime bytes [noreply]
value
key:键名
flags::可以包括键值对的整形参数,客户机使用他存储关于键值对的额外信息
exptime:缓存中保存键值对的时间(秒,0为永远)(其实这里我有一个疑问,memcache是存储在内存中的,永远代表什么?
因为一旦系统重启,所有内存中的存储的都不存在了,后来查了一些资料,即使是memcache设置为永久,最长保存时间
也是30天)
bytes:缓存中存储的字节数
noreply(:非必需)告知服务器不需要返回数据
value:存储的值(始终位于第二行)
add:
add key flags exptime bytes [noreply]
value
replace: replace key flags exptime bytes [noreply] value
append: append key flags exptime bytes [noreply] value
prepend:
prepend key flags exptime bytes [noreply]
value
cas
cas key flags exptime bytes unique_cas_token [noreply]
value
unique_cas_token:通过gets命令获取的一个位的64位值
步骤:
要在 Memcached 上使用 CAS 命令,你需要从 Memcached 服务商通过 gets 命令获取令牌(token)。
gets 命令的功能类似于基本的 get