1、exists
通常情况下用exists来判断一个key是否存在没什么问题。但如果过期时间需要精确到秒或十秒级,那么exists就可能错误返回。
原因是在redis Key过期之后,但是执行exists命令的返回值可能还为true,这个时候使用TTL命令发现返回值已经小于等于0了。
ps :
redis key 过期的方式有三种:
2、ttl
使用TTL key可以访问key的生存时间。
时间复杂度:
O(1)
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
3、set
set key value
设置指定 key 的值为 value。
如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
4、setex
setex key seconds value
设置指定 key 的值为 value,并将 key 的过期时间设为 seconds (以秒为单位)。
如果 key 已经存在, SETEX 命令将会替换旧的值。
5、setnx
setnx key value
设置指定 key 的值为 value,只有在 key 不存在时设置 key 的值。
setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。
设置成功,返回 1 。 设置失败,返回 0 。
6、getset
getset key value
设置指定 key 的值为 value,并返回 key 的旧值(old value)。
返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。
当 key 存在但不是字符串类型时,返回一个错误。
7、其它
已经设置生存时间的key,如果想清除掉生存时间,将其变成永久存在的key,可以使用persist命令。
返回值:
以上所有命令时间单位都是秒,如果需要设置、访问毫秒级别的时间,在所有命令前加p就可以了。
eg.
set key value px 1000
可选参数说明:
从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
因此:
因为 SET 命令可以通过参数来实现 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX 、 SETEX 和 PSETEX 这三个命令。