Skip to content

Commit 9fffbde

Browse files
committed
optimize redis release script
1 parent 02e6350 commit 9fffbde

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/yapcache/distlock.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ async def release(self):
2929

3030
class RedisDistLock(DistLock):
3131
RELEASE_LOCK_SCRIPT = """
32-
if redis.call("get", KEYS[1]) == false then
33-
return "not_found"
34-
elseif redis.call("get", KEYS[1]) == ARGV[1] then
35-
redis.call("del", KEYS[1])
36-
return "released"
32+
local val = redis.call("get", KEYS[1])
33+
34+
if not val then
35+
return 1
36+
elseif val == ARGV[1] then
37+
return redis.call("del", KEYS[1])
3738
else
38-
return "unmatch"
39+
return 0
3940
end
4041
"""
4142

@@ -86,10 +87,10 @@ async def _acquire(self):
8687

8788
@override
8889
async def release(self):
89-
release_result = await self.client.eval(
90+
released = await self.client.eval(
9091
self.RELEASE_LOCK_SCRIPT, 1, self.resource_name, self.lock_id
9192
) # type: ignore
92-
if release_result in ("released", "not_found"):
93+
if released:
9394
try:
9495
RedisDistLock._EVENTS.pop(self.resource_name).set()
9596
except KeyError:

0 commit comments

Comments
 (0)