Redis分布式锁 setnx命令如何设置key的失效时间

Redis的setnx命令:官方解释如下

Available since 1.0.0.

Time complexity: O(1)

Set key to hold string value if key does not exist. In that case, it is equal to SET. When key already holds a value, no operation is performed. SETNX is short for "SET if Not eXists".

大致意思:将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。

Redissetnx命令,不能同时完成expire设置失效时长,不能保证setnxexpire的原子性。

如果在setnx之后执行expire  之前进程意外crash或者要重启维护,岂不是歇菜了

但是我们可以使用set命令完成setnxexpire的操作,并且这种操作是原子操作。
下面是set命令的可选项:

set key value [EX seconds] [PX milliseconds] [NX|XX]
EX seconds:设置失效时长,单位秒
PX milliseconds:设置失效时长,单位毫秒
NX:key不存在时设置value,成功返回OK,失败返回(nil)
XX:key存在时设置value,成功返回OK,失败返回(nil)

案例:设置name=liuxinglin,失效时长100s,不存在时设置
1.1.1.1:6379> set name liuxinglin ex 100 nx
OK
1.1.1.1:6379> get name
"liuxinglin"
1.1.1.1:6379> ttl name
(integer) 94

猜你喜欢

转载自blog.csdn.net/liuxl57805678/article/details/103199977