使用telnet连接memcache服务器端
memcache的默认端口号是11211
语法:telnet ip地址 端口号
注意:telnet客户端无法使用的解决方案:
一、设置数据
1. 添加数据
语法:add key 是否压缩(0|1) 缓存时间 数据的长度
key:键的名称
是否压缩:0表示不压缩,1表示要压缩,压缩的目的让数据变小,存储更多的数据。
缓存时间:失效时间,表示过了该时间数据就失效。
数据的长度:单位是字节
设置一个key为name不压缩,缓存时间为60,数据的长度是5,值为jason
注意:在使用add添加数据时,如果该键已经存在,则添加失败,不会覆盖。
2. 修改数据
语法:replace key 0|1 缓存时间 数据的长度
注意:如果键不存在,则修改失败。
3. 设置数据
语法:set key 0|1 缓存时间 数据长度
如果键已经存在,则是修改,如果键不存在,则是添加。
二、获取数据
语法:get key
三、删除数据
语法:delete key
flush_all 是删除所有的缓存项
四、其他命令
incr 增加指定的值
语法:incr key number
decr 减少指定的值
语法:decr key number
比如有1000件商品,需要在60秒内抢购。
一开始就设置number的值为1000,当用户抢购时执行decr number,如果执行后返回的值大于0则说明抢购成功。
五、状态命令
stats
通过查看状态的参数,主要是计算命中率:
get_hits/cmd_get = 得出一个命中率,命中率越高越好,如果命中率比较低,则需要调整缓存项。
六、缓存时间的设置的讨论
在设置缓存时间有两种设置方式:
- 使用秒数(时间间隔)<= 2592000
- 使用到期的时间戳 该时间戳必须要大于当前的时间戳才有效。
在设置时,设置的参数都是整数,如何区分是时间戳还是时间间隔呢?
在使用时间间隔设置缓存时间时,有一个限制的,不能超过30天,30*24*3600秒2592000
比如如果要把一个缓存项失效时间设置为2个月如何设置呢?
time()+30*24*3600*2
比如要把一个缓存项失效时间设置为10天如何设置?
有两种设置方案:
使用时间间隔:10*24*3600
使用时间戳:time()+10*24*3600
比如如果一个缓存项失效时间设置为123489,该值是时间戳还是时间间隔?
如果该值小于等于2592000则是时间间隔,如果大于该值是时间戳。
注意:如果缓存时间设置为0,表明此数据永不过期。