《Redis使用手册》(试读版)释放操作⽤于放弃资源的独占使⽤权, ⼀般由锁的持有者调⽤。 在锁被释放之后, 其他进程就可以再次尝 试获取这个锁了。 代码清单 2-2 展示了⼀个使⽤字符串键实现的锁程序, 这个程序会根据给定的字符串键是否有值来判断锁是否已 经被获取, ⽽针对锁的获取操作和释放操作则是分别通过设置字符串键和删除字符串键来完成的。 代码清单 2-2 使⽤字符串键实现的锁程序:/string/lock.py VALUE_OF_LOCK 如果给定的字符串键已经有值了, 那么说明锁已经被获取, SET 命令将放弃执⾏设置操作, 并 将 result 变量的值将为 None ; acquire() ⽅法最后会通过检查 result 变量的值是否为 True 来判断⾃⼰是否成功取得了锁。 释放操作 release() ⽅法使⽤了本书之前没有介绍过的 DEL 命令, 这个命令接受⼀个或多个数据库键作为参数, 尝试删除这些键以及与之相关联的值, 并返回被成功删除的键数量作为结果: 命令实际上是通过 调⽤ delete() ⽅法来完成的: self.client.delete(self.key) == 1 release() ⽅法通过检查 delete() ⽅法的返回值是否为 1 来判断删除操作是否执⾏成功: 如果⽤户尝试对⼀个尚 未被获取的锁执⾏ release() ⽅法, 那么⽅法将返回 false , 表示没有锁被释放。 在使⽤ DEL 命令删除代表锁的字符串键之后, 字符串键将重新回到没有值的状态,0 码力 | 352 页 | 6.57 MB | 1 年前3
共 1 条
- 1













