springboot+redission再相识

本文详细介绍了Redisson——一个基于Redis的Java驻内存数据网格,它提供了丰富的分布式对象和服务,如锁、信号量、计数器等。相较于Jedis和Lettuce,Redisson不仅提供了基本的Redis操作,还构建了一个全面的分布式工具集,被官方推荐为优秀的分布式解决方案。文中通过实例展示了如何配置和使用Redisson实现分布式锁,以解决并发问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redission是一个在Redis的基础上实现的java驻内存数据网格,它不仅提供了一系列的分布式常用对象,还提供了许多分布式服务。其中包括BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, CountDownLatch, Publish / Subscribe, Bloom filter, Remote service, Spring cache, Executor service, Live Object service, Scheduler service。
Redission是一个基于Redis实现的分布式工具,有基本分布式对象和高级又抽象的分布式服务,为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决方法,如用作分布式锁工具。

Redission和Jedis、Lettuce的区别:

  • Jedis是Redis官方推出的用于通过Java连接Redis客户端的一个工具包,提供了Redis的各种命令支持;
  • Lettuce是一种可扩展的线程安全的 Redis 客户端,通讯框架基于Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。Spring Boot 2.x 开始,Lettuce 已取代 Jedis 成为首选 Redis 的客户端;
  • Redisson是架设在Redis基础上,通讯基于Netty的综合的、新型的中间件,企业级开发中使用Redis的最佳范本;

Jedis把Redis命令封装好,Lettuce则进一步有了更丰富的Api,也支持集群等模式。但是两者也都点到为止,只给了你操作Redis数据库的脚手架,而Redisson则是基于Redis、Lua和Netty建立起了成熟的分布式解决方案,甚至redis官方都推荐的一种工具集。

分布式锁
分布式锁在业务场景中解决并发问题的硬性需求,实现方式很多,下面再看看redission如何解决分布式锁的问题。
1、pom依赖

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.13.6</version>
</dependency>

2、配置

@ConditionalOnProperty(prefix = "redisson",name = "address")
@ConfigurationProperties(prefix = "redisson")
@Configuration
public class RedissonConfig {

    @Setter
    private String address;
    @Setter
    private String password;
    @Setter
    private Integer database;
    @Setter
    private Integer minIdle;// 默认最小空闲连接数

    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer();
        singleServerConfig.setAddress(address);
        singleServerConfig.setDatabase(database);
        singleServerConfig.setConnectionMinimumIdleSize(minIdle);
        if (StrUtil.isNotBlank(password)) {
            singleServerConfig.setPassword(password);
        }
        return Redisson.create(config);
    }

}

3、简单使用

@Resource
private RedissonClient redissonClient;

RLock rLock = redissonClient.getLock(lockName);
try {
    boolean isLocked = rLock.tryLock(expireTime, TimeUnit.MILLISECONDS);
    if (isLocked) {
        // TODO
    } catch (Exception e) {
        rLock.unlock();
    }

简单实现了分布式锁控制。

后续会不断完善其实现原理,未完待续

Spring Boot可以通过引入Redisson库来实现对Redisson的使用。在Spring Boot中,首先需要配置Redisson的启动类,并指定Redis的连接信息,如主机、端口、密码等。然后,可以通过RedissonClient对象来获取Redisson的实例,从而进行相应的操作。 首先,在Spring Boot的启动类中,需要添加`@SpringBootApplication`注解,并在`main`方法中调用`SpringApplication.run`方法来启动应用。 其次,在配置文件中,需要设置Redis的连接信息,例如主机名、端口号、密码等。这些配置项可以通过`application.properties`或`application.yml`文件进行配置。 然后,在具体的代码中,可以使用`@Resource`注解注入`RedissonClient`对象,并通过该对象获取对应的锁实例。例如,可以使用`getLock`方法来获取一个锁,并使用`tryLock`方法来尝试获取该锁。如果成功获取到锁,则可以进行相应的操作。 需要注意的是,在使用完锁之后,需要调用`unlock`方法来释放锁资源,以避免资源泄漏或死锁等问题。 以上是使用Spring Boot实现Redisson的简单示例,具体的使用方式可以根据实际需求来进行调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [springboot集成redission(代码完整版)](https://blog.youkuaiyun.com/m0_37825155/article/details/120696303)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [springboot+redission相识](https://blog.youkuaiyun.com/leijie0322/article/details/126777979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值