Redisson分布式锁

可参考:www.it610.com/article/152985037452...
1、Redisson简介
Redis 是最流行的 NoSQL 数据库解决方案之一,而 Java 是世界上最流行(注意,没有说“最好”)的编程语言之一。虽然两者看起来很自然地在一起“工作”,但是要知道,Redis 其实并没有对 Java 提供原生支持。
相反,作为 Java 开发人员,我们若想在程序中集成 Redis,必须使用 Redis 的第三方库。而 Redisson 就是用于在 Java 程序中操作 Redis 的库,它使得我们可以在程序中轻松地使用 Redis。Redisson 在 java.util 中常用接口的基础上,为我们提供了一系列具有分布式特性的工具类。
Redisson底层采用的是Netty 框架。支持Redis 2.8以上版本,支持Java1.6+以上版本。
2、Redisson实现分布式锁的步骤
2.1.引入依赖
SpringBoot整合Redisson有个比较好用的starter包就是redisson-spring-boot-starter,这也是官方比较推荐的配置方式

引入redisson依赖

只需引入redisson-spring-boot-starter就可以了,不过这里需要注意springboot与redisson的版本,因为官方推荐redisson版本与springboot版本配合使用。版本不匹配会导致这种问题。

将 Redisson 与 Spring Boot 库集成。取决于Spring Data Redis模块,支持 Spring Boot 1.3.x - 2.4.x

这句话是官方说的,不过现在的2.5.x也是支持的,只需要注意springboot最低版本不要低于1.3.x即可。

redisson-spring-data与Spring Boot version的版本对应关系

redisson-spring-data module name Spring Boot version
redisson-spring-data-16 1.3.x
redisson-spring-data-17 1.4.x
redisson-spring-data-18 1.5.x
redisson-spring-data-20 2.0.x
redisson-spring-data-21 2.1.x
redisson-spring-data-22 2.2.x
redisson-spring-data-23 2.3.x
redisson-spring-data-24 2.4.x

maven依赖


            org.redisson
            redisson-spring-boot-starter
            3.17.1

点击redisson-spring-boot-starter进去

Redisson分布式锁

Redisson分布式锁

Redisson分布式锁

public class IndexController {
    @Autowired(required = false)
    private RedissonClient redissonClient;

    @GetMapping("/index")
    public String index() {
        RLock tokenLock = redissonClient.getLock("tokenLock");
        RBucket<String> name = redissonClient.getBucket("name");
        name.set("zhangxiao");

        tokenLock.lock();
        try {
            System.out.println("获取锁");
            Thread.sleep(20000);
            System.out.println("加锁成功,代码线程:" + Thread.currentThread().getName());
        } catch (Exception ex) {
            System.out.println("异常报错");
        } finally {
            tokenLock.unlock();
        }
        return "redisson is ok";
    }
}

Redisson分布式锁

本作品采用《CC 协议》,转载必须注明作者和本文链接
zhaozhangxiao
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!