Redis系列-好玩的用法

分布式锁

客户端执行如下命令,来获取锁和释放锁。

random = random()
ok = (Set key random PX 2000ms NX) if (ok) { //do something if (redis->get(key) == random) { (del key) } }

key不存在时设置,过期时间是2000ms。如果命令成功,表示获取锁成功。
设置过期时间是为了解决获得锁的客户端意外终止产生死锁现象。释放锁时,先判断key的value是否是自己生成的,如果是再删除锁。这是为了避免因操作超时,锁被自动释放,其他客户端已经获取了锁,当前客户端误删锁。

 

你可能感兴趣的:(Redis系列-好玩的用法)