用户多个请求同时发送,后端已经使用了redis锁对用户的uid进行限制,但是由于redis加锁需要时间,导致在加锁的时候已经有多个请求打过来了,请教一下有什么好的方法去限制吗
当多个请求同时发送到后端系统,而Redis加锁需要一定时间时,可能会导致竞态条件(race condition)。这种情况下,可以考虑以下几种方法来限制并发的请求数量:
结合你的具体情况和实际需求,可以选择一种或多种方法来解决并发请求过多的问题。
用户多个请求同时发送,后端已经使用了redis锁对用户的uid进行限制,但是由于redis加锁需要时间,导致在加锁的时候已经有多个请求打过来了
猜测一下楼主的想法,可能是担心多个用户同时去加锁会有问题是吗?基本上没什么问题,因为Redis是单线程去处理命令的,ABC同时加锁一定会出现只有一个成功,其他要么阻塞要么失败直接返回,当然前提是你使用的SETNX
。
15 回答8.2k 阅读
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
1 回答3.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
没看懂限制什么内容。
redis加锁只有成功失败两个状态,同一时间锁只会由一个持有者。持有者才有权限访问,未持有者能够访问就是你的业务代码写的有问题的。
循环读锁直到超时或者成功,成功后才可以访问。