lua里面好像并不是使用setnx概念

来源:4-6 Redis分布式锁限制一人一单

weixin_慕工程538969

2022-06-09

老师,我有个疑问。你这边lua好像并没有使用setnx实现吧。

同时我有个疑问,为何在lock.lua里面会有hexists key里有threadId则要++呢?

然后unlock.lua则要先判断threadId中的次数是否为0。

这个是针对什么场景使用的?默认不是应该在当次线程中才会锁一次吗,为什么会发生锁上多次的状况?是不是单个api中会发生需要重复加锁的可能性

写回答

1回答

InCowboy

2022-06-12

这里lua没用setnx,用的是hash结构,这样更通用,然后使用ThreadId的目的是为了满足锁的可重入性,可重入性就是能支持重复加锁,高并发情况下,短时间内多次操作是很有可能的

0
0

高级Redis进阶课 解决Redis实际问题+掌握Redis6.x特性

以项目整合Redis各种场景,从此轻松应对各类Redis难题

934 学习 · 353 问题

查看课程