redis分布式锁 获取锁同时设置超时时间
时间: 2023-06-29 13:03:05 浏览: 161
redis分布式锁
获取 Redis 分布式锁同时设置超时时间,可以使用以下 Lua 脚本:
```
local lock_key = KEYS[1] -- 锁的 key
local lock_value = ARGV[1] -- 锁的 value
local expire_time = ARGV[2] -- 锁的过期时间,单位为秒
-- 获取锁
local result = redis.call('set', lock_key, lock_value, 'NX', 'EX', expire_time)
if result then
-- 获取锁成功
return 1
else
-- 获取锁失败
return 0
end
```
使用方法:
1. 将上面的 Lua 脚本保存为一个文件,例如 `lock.lua`。
2. 在代码中使用 Redis 的 `eval` 命令执行该脚本,其中 `KEYS[1]` 是锁的 key,`ARGV[1]` 是锁的 value,`ARGV[2]` 是锁的过期时间,单位为秒。
示例代码:
```python
import redis
r = redis.Redis(host='localhost', port=6379)
# 执行 Lua 脚本获取锁
result = r.eval(open('lock.lua').read(), 1, 'lock_key', 'lock_value', 10)
if result == 1:
# 获取锁成功
print('get lock success')
else:
# 获取锁失败
print('get lock failed')
```
其中 `lock_key` 是锁的 key,`lock_value` 是锁的 value,`10` 是锁的过期时间,单位为秒。如果获取锁成功,返回值为 `1`,否则返回值为 `0`。
阅读全文