Redisson接入和使用

引入依赖

<!-- Redisson -->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson-spring-boot-starter</artifactId>
    <version>3.24.3</version>
</dependency>

配置说明

单机模式 singleServerConfig

spring:
  redis:
    redisson:
      config: |
        singleServerConfig:
          idleConnectionTimeout: 10000
          # 连接超时时间(毫秒)
          connectTimeout: 10000
          # 命令执行超时时间(毫秒)
          timeout: 3000
          retryAttempts: 3
          retryInterval: 1500
          password: 'NFTurbo666'
          subscriptionsPerConnection: 5
          clientName: null
          # Redis 服务器地址
          address: "redis://r-xxxx.redis.rds.aliyuncs.com:6379"
          subscriptionConnectionMinimumIdleSize: 1
          subscriptionConnectionPoolSize: 50
          # 连接池最小空闲连接数
          connectionMinimumIdleSize: 24
          # 连接池最大连接数
          connectionPoolSize: 64
          database: 0
          dnsMonitoringInterval: 5000
        threads: 16
        nettyThreads: 32
        # 序列化方式
        codec: !<org.redisson.codec.JsonJacksonCodec> {}
        transportMode: "NIO"

集群模式 clusterServersConfig

clusterServersConfig:
  # 集群节点地址列表
  nodeAddresses:
    - "redis://127.0.0.1:7000"
    - "redis://127.0.0.1:7001"
    - "redis://127.0.0.1:7002"
  # 用于负载均衡的连接池大小
  slaveConnectionPoolSize: 250
  # 主节点连接池大小
  masterConnectionPoolSize: 250
  # 连接超时时间(毫秒)
  connectTimeout: 3000
  # 命令执行超时时间(毫秒)
  timeout: 3000

主从模式 masterSlaveServersConfig

masterSlaveServersConfig:
  # 主节点地址
  masterAddress: "redis://127.0.0.1:6379"
  # 从节点地址列表
  slaveAddresses:
    - "redis://127.0.0.1:6380"
    - "redis://127.0.0.1:6381"
  # 主节点连接池大小
  masterConnectionPoolSize: 250
  # 从节点连接池大小
  slaveConnectionPoolSize: 250
  # 连接超时时间(毫秒)
  connectTimeout: 3000
  # 命令执行超时时间(毫秒)
  timeout: 3000

哨兵模式 sentinelServersConfig

sentinelServersConfig:
  # 主节点名称
  masterName: "mymaster"
  # 哨兵节点地址列表
  sentinelAddresses:
    - "redis://127.0.0.1:26379"
    - "redis://127.0.0.1:26380"
  # 主节点连接池大小
  masterConnectionPoolSize: 250
  # 从节点连接池大小
  slaveConnectionPoolSize: 250
  # 连接超时时间(毫秒)
  connectTimeout: 3000
  # 命令执行超时时间(毫秒)
  timeout: 3000

常规代码使用

通过Autowired注入RedissonClient客户端

@Autowired
    private RedissonClient redissonClient;

RedissonClient 常用方法:

# getSet获取Redis中的无序集合对象
redissonClient.getSet("SET_KEY_NAME");
# 添加元素到无序集合中
redissonClient.add(elements);
# 批量添加元素到无序集合中:
redissonClient.addAll(elements); 
# 移除指定元素从无序集合中:
redissonClient.remove(element); 
# 判断无序集合中是否包含指定元素:
redissonClient.contains(element);

# 从缓存中获取键值对,如果键存在则返回其值,否则返回null
redissonClient.getIfPresent(elements);

redissonClient.put(elements, true);

通过Autowired注入RedissonClient后,不会自动关闭RedissonClient,所以需要手动关闭

redissonClient.shutdown();

实现自动关闭的两种方式

  • 使用@PreDestroy注解:可以在包含RedissonClient的 Bean 类中,使用@PreDestroy注解来标记一个方法,该方法会在 Spring 容器关闭时被调用,用于执行RedissonClient的关闭操作。示例如下:
@Component
public class RedissonClientWrapper {

    @Autowired
    private RedissonClient redissonClient;

    // 其他业务方法

    @PreDestroy
    public void shutdownRedissonClient() {
        redissonClient.shutdown();
    }
}
  • 使用@Configuration@BeandestroyMethod属性:在配置类中,通过@Bean注解定义RedissonClient的 Bean,并使用destroyMethod属性指定关闭方法。
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RedissonConfig {

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redissonClient() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        return Redisson.create(config);
    }
}

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部