分布式锁的粒度太大

Blade 未结 2 1203
lishangyin
lishangyin 剑圣 2021-12-22 14:21

一、该问题的重现步骤是什么?

1. 我按照文档,启用分布式锁

2. 访问2个不同的notice 对象,1个是1123598818738675223,另外一个是1123598818738675224


二、你期待的结果是什么?实际看到的又是什么?

因为访问2个不同的对象,应该不需要相互影响。

但是在访问过程中,是顺序执行的。



三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。


(=)
()
(= )
(= = )
R<NoticeVO> (Notice notice) {
   (notice.getId().equals()) {
      {
         Thread.(* )} (InterruptedException e) {
         e.printStackTrace()}
   }
   Notice detail = .getOne(Condition.(notice))R.(NoticeWrapper.().entityVO(detail))}


2条回答
  • 2021-12-22 14:26

    这种分布锁,一定要能锁某一个对象才可以,如果锁的是整个方法,就不太实用了。

    0 讨论(0)
  • 2021-12-24 11:26

    分布式锁的注解形式是锁的方法,如果要更加细颗粒度控制,可以注入  RedisLockClient 类在代码行级进行操作


    作者追问:2021-12-27 16:10

    能不能定义一个规范,直接使用第一个参数的getId方法,作为key?


    0 讨论(0)
提交回复