Redis key已经过期,后端可以获取到key
带着这样的判断,我们在该redis上执行info命令确认了一下,果然该redis是slave,咨询了相关部署的同事得知,该业务在进行数据迁移过程中,存在多级复制和双写的情况,所以才将redis slave设置为可写状态,此时将slave的slaveof 设置成no one,既断开同步,再次排查所有过期key的TTL都返回-2了。使用指令删除redis中的所有key,重新测试时发现设置了过期时间的k
Redis key已经过期但未删除,后端可以获取到key-value
设置了一个key 过期时间为300s,但是五分钟后还是可以获取到key。
通过keys *查看没有key存在,但是可视化界面后面又有记录存在但是打不开db0。使用指令删除redis中的所有key,重新测试时发现设置了过期时间的key ttl一直减少直到变成0,然后刷新。发现又打不开db0了,问题就出现在这里
Redis的key,通过TTL命令返回key的过期时间,一般来说有3中:
-
当前key没有设置过期时间,所以会返回-1.
-
当前key有设置过期时间,而且key已经过期,所以会返回-2.
-
当前key有设置过期时间,且key还没有过期,故会返回key的正常
如果一个redis作为slave,且将slave-read-only设置为off,并写入了一个带有TTL的key时,当key过期后,该key是不会被Redis删除的,且TTL在过期后永远为0。
带着这样的判断,我们在该redis上执行info命令确认了一下,果然该redis是slave,咨询了相关部署的同事得知,该业务在进行数据迁移过程中,存在多级复制和双写的情况,所以才将redis slave设置为可写状态,此时将slave的slaveof 设置成no one,既断开同步,再次排查所有过期key的TTL都返回-2了。
更多推荐
所有评论(0)