在为key设置过期时间需要注意的事项
1、 DEL/SET/GETSET等命令会清除过期时间
在使用DEL、SET、GETSET等会覆盖key对应value的命令操作一个设置了过期时间的key的时候,会导致对应的key的过期时间被清除。
//设置mykey的过期时间为300s
127.0.0.1:6379> set mykey hello ex 300OK//查看过期时间
127.0.0.1:6379>ttl mykey
(integer)294
//使用set命令覆盖mykey的内容
127.0.0.1:6379> setmykey olleh
OK//过期时间被清除
127.0.0.1:6379>ttl mykey
(integer)-1
2、INCR/LPUSH/HSET等命令则不会清除过期时间
而在使用INCR/LPUSH/HSET这种只是修改一个key的value,而不是覆盖整个value的命令,则不会清除key的过期时间。
INCR:
//设置incr_key的过期时间为300s
127.0.0.1:6379> set incr_key 1 ex 300OK127.0.0.1:6379>ttl incr_key
(integer)291
//进行自增操作
127.0.0.1:6379>incr incr_key
(integer)2
127.0.0.1:6379> getincr_key"2"
//查询过期时间,发现过期时间没有被清除
127.0.0.1:6379>ttl incr_key
(integer)277