redisson的unlock方法

复制代码
//分布式方式,分布式锁,采用redisson锁
RLock lock = redissonClient.getLock(userId.toString());//lock方法会无限重试。getLock底层是hash,大key是userid,小key是线程,value是重入次数
try {
    //boolean b = lock.tryLock(1,5, TimeUnit.SECONDS);//设置失效时间,看门狗失效
    //看门机制不能设置失效时间  采用默认的失效时间30秒  (那重试时间怎么设置呢??还用不用设置??)
    boolean b = lock.tryLock();
    if (!b){
        throw new RuntimeException("频繁操作");
    }
    //从aop上下文中 获取当前类的代理对象
    IUserCouponService iUserCouponService = (IUserCouponService)AopContext.currentProxy();
    //checkAndCreateUserCoupon(userId, coupon, null);这种写法是调用原对象的方法
    iUserCouponService.checkAndCreateUserCoupon(userId, coupon, null);//这种写法调用代理对象的方法,方法是有事务处理的
}finally {
    lock.unlock();
}

unlock方法的校验当前锁的对象是否是当前线程id和删除锁操作时是原子操作

校验这个锁是不是自己线程的

相关推荐
夕除33 分钟前
redis--模型
redis
John_Hui6 小时前
第 5 篇:Ubuntu 安装 Redis
数据库·redis·缓存
Navicat中国6 小时前
Navicat 连接 Redis 数据库
数据库·redis·数据库开发·navicat
咖啡八杯7 小时前
Redis 工具封装:RedisCache 对 Operations 体系的二次封装
java·数据库·redis·缓存·框架·springboot·若依
牧瀬クリスだ8 小时前
Redis Hash实战:高效存储对象与购物车
java·数据库·redis·算法·哈希算法
每天一道题8 小时前
分布式锁真的安全吗?从 Redis 锁、Lease 到 Fencing Token
redis·分布式·安全
光依旧10 小时前
多实例治理一致性深潜:Redis与本地缓存降级(MCP实战手记·篇12 延伸)
redis·caffeine·高可用·缓存一致性·mcp·多实例
Tt有了t11 小时前
Redis的数据结构
数据结构·数据库·redis
牧瀬クリスだ12 小时前
Redis List实战:从队列到最新列表的高效应用
数据库·redis·list