背景:
开发环境大家共用redis集群, 出现设置的redis key随机丢失
1. 检查key是否设置了过期时间
执行ttl key
发现值是-1,并没有设定过期时间
2. 检查是否有人删除key,或者flushdb,flushall
执行info commandstats
cmdstat_XXX
:calls=XXX,usec=XXX,usec_per_call=XXX
看出命令执行的次数、命令耗费的 CPU 时间(单位毫秒)、执行每个命令耗费的平均 CPU 时间(单位毫秒)
看看del,flushdb,flushall的次数,可能执行的时候已经有大量的调用,先执行config resetstat进行重置
3. 检查内存配置,是否超出内存设定被回收
a. info命令查看
evicted_keys
: 因最大内存容量限制而被驱逐(evict)的键数量
当时发现evicted keys值大于0,怀疑内存不够
b. 检查是否设置最大内存
执行CONFIG GET maxmemor