在开始提到Redis分布式锁之前,我想跟大家聊点Redis的基础知识。
说一下Redis的两个命令:
代码语言:javascript复制SETNX key value
setnx
是SET if Not eXists(如果不存在,则 SET)的简写。
用法如图,如果不存在set成功返回int的1,这个key存在了返回0。
代码语言:javascript复制SETEX key seconds value
将值 value
关联到 key
,并将 key
的生存时间设为 seconds
(以秒为单位)。
如果 key
已经存在,setex
命令将覆写旧值。
有小伙伴肯定会疑惑万一set value 成功 set time失败,那不就傻了么,这啊Redis官网想到了。
setex
是一个原子性(atomic)操作,关联值和设置生存时间两个动作会在同一时间内完成。
我设置了10秒的失效时间,ttl命令可以查看倒计时,负的说明已经到期了。
跟大家讲这两个命名也是有原因的,因为他们是Redis实现分布式锁的关键。