Ruby 分布式锁

807715333 · 2024年05月22日 · 最后由 jian.li 回复于 2024年06月04日 · 561 次阅读

请教下大家一个问题 如果使用了分布式锁的话还需要使用 synchronized 这种关键字再在方法上加锁吗, 比如 按我理解比如使用 redis 实现分布式锁的话,好像不需要使用 synchronized 关键字 如果需要的话那一般是什么场景

1 用分布式锁了就不需要用 synchronized 了

2 有些场合,例如你的 springboot 是单机、单进程的单体应用,synchronized 同步锁就已足够,不需要额外依赖 zk 或 redis 之类的复杂分布式锁

看你怎么用。把 synchronized 锁包在外面,分布式锁放在里面。synchronized 锁就把大部分请求以很廉价的方式拦下来了,不用请求分布式锁,这个比较“昂贵”(通信开销之类的)。

这是 Ruby 吗

已经分布式锁了就不需要叠加 synchronized 了吧。 不同分布式锁实现的超时处理机制不一样。 gem 的话,redis 的 redlock,pg 的 with_advisory_lock,都可以拿来就用。

不需要,建议再看看 mutex 和分布式锁的使用场景的文章。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号