Redis中set、setnx、setex区别
1、SET key value
含义:
将字符串值 value 关联到 key 。
如果 key 已经持有其他值, SET 就覆写旧值,无视类型。
2、SETEX key seconds value
含义:
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
如果 key 已经存在, SETEX 命令将覆写旧值。
返回值:
设置成功时返回 OK 。
当 seconds 参数不合法时,返回一个错误。
3、SETNX key value
含义:
将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不做任何动作。
SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
返回值:
设置成功,返回 1 。
设置失败,返回 0 。
标注:目前在最新的jedis版本3.5.1中,也没有发现setnx方法支持过期时间的设置,所以setnx对过期时间的设置不是很友好,不能保持原子性
4、GETSET key value
含义:
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
当 key 存在但不是字符串类型时,返回一个错误。
返回值:
返回给定 key 的旧值。
当 key 没有旧值时,也即是, key 不存在时,返回 null 。
郭慕荣博客园