lua里面好像并不是使用setnx概念
来源:4-6 Redis分布式锁限制一人一单
weixin_慕工程538969
2022-06-09
老师,我有个疑问。你这边lua好像并没有使用setnx实现吧。
同时我有个疑问,为何在lock.lua里面会有hexists key里有threadId则要++呢?
然后unlock.lua则要先判断threadId中的次数是否为0。
这个是针对什么场景使用的?默认不是应该在当次线程中才会锁一次吗,为什么会发生锁上多次的状况?是不是单个api中会发生需要重复加锁的可能性
写回答
1回答
-
这里lua没用setnx,用的是hash结构,这样更通用,然后使用ThreadId的目的是为了满足锁的可重入性,可重入性就是能支持重复加锁,高并发情况下,短时间内多次操作是很有可能的
00
相似问题