redisson配置类---SpringBoot集成、redis单机和集群模式配置

这篇具有很好参考价值的文章主要介绍了redisson配置类---SpringBoot集成、redis单机和集群模式配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1项目配置文件:

1.1:pom.xml

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.17.7</version>
        </dependency> 

1.2 application.yml配置文件

spring:
 redis:
  cluster:
    nodes:
      - ip:port
      - ip:port
      - ip:port
      - ip:port
      - ip:port
      - ip:port
  # 密码
  password: *******
  # 连接超时时间
  timeout: 10s
  # 是否开启ssl
  ssl: false
redisson:
# 线程池数量
 threads: 8
# Netty线程池数量
 nettyThreads: 16
# 集群配置
 clusterServersConfig:
  # 客户端名称
  clientName: redisClient
  # master最小空闲连接数
  masterConnectionMinimumIdleSize: 16
  # master连接池大小
  masterConnectionPoolSize: 32
  # slave最小空闲连接数
  slaveConnectionMinimumIdleSize: 16
  # slave连接池大小
  slaveConnectionPoolSize: 64
  # 连接空闲超时,单位:毫秒
  idleConnectionTimeout: 10000
  # 命令等待超时,单位:毫秒
  timeout: 3000
  # 发布和订阅连接池大小
  subscriptionConnectionPoolSize: 50
  # 读取模式
  readMode: "SLAVE"
  # 订阅模式
  subscriptionMode: "MASTER"

cacheGroup:
  # 用例: @Cacheable(cacheNames="groupId", key="#XXX") 方可使用缓存组配置
  - groupId: redissonCacheMap
    # 组过期时间(脚本监控)
    ttl: 60000
    # 组最大空闲时间(脚本监控)
    maxIdleTime: 60000
    # 组最大长度
    maxSize: 0

配置类

2-1配置属性类:RedissonProperties.java

import lombok.Data;
import lombok.NoArgsConstructor;
import org.redisson.config.ReadMode;
import org.redisson.config.SubscriptionMode;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * Redisson 配置属性
 * @author zengshichang
 */
@Data
@Component
@ConfigurationProperties(prefix = "redisson")
public class RedissonProperties {
    /**
     * 线程池数量,默认值 = 当前处理核数量 * 2
     */
    private int threads;
    /**
     * Netty线程池数量,默认值 = 当前处理核数量 * 2
     */
    private int nettyThreads;
    /**
     * 单机服务配置
     */
    private SingleServerConfig singleServerConfig;
    /**
     * 集群服务配置
     */
    private ClusterServersConfig clusterServersConfig;
    /**
     * 缓存组
     */
    private List<CacheGroup> cacheGroup;
    @Data
    @NoArgsConstructor
    public static class SingleServerConfig {
        /**
         * 客户端名称
         */
        private String clientName;
        /**
         * 最小空闲连接数
         */
        private int connectionMinimumIdleSize;
        /**
         * 连接池大小
         */
        private int connectionPoolSize;
        /**
         * 连接空闲超时,单位:毫秒
         */
        private int idleConnectionTimeout;
        /**
         * 命令等待超时,单位:毫秒
         */
        private int timeout;
        /**
         * 发布和订阅连接池大小
         */
        private int subscriptionConnectionPoolSize;
    }
    @Data
    @NoArgsConstructor
    public static class ClusterServersConfig {
        /**
         * 客户端名称
         */
        private String clientName;

        /**
         * master最小空闲连接数
         */
        private int masterConnectionMinimumIdleSize;
        /**
         * master连接池大小
         */
        private int masterConnectionPoolSize;
        /**
         * slave最小空闲连接数
         */
        private int slaveConnectionMinimumIdleSize;
        /**
         * slave连接池大小
         */
        private int slaveConnectionPoolSize;
        /**
         * 连接空闲超时,单位:毫秒
         */
        private int idleConnectionTimeout;
        /**
         * 命令等待超时,单位:毫秒
         */
        private int timeout;
        /**
         * 发布和订阅连接池大小
         */
        private int subscriptionConnectionPoolSize;
        /**
         * 读取模式
         */
        private ReadMode readMode;
        /**
         * 订阅模式
         */
        private SubscriptionMode subscriptionMode;
    }
    @Data
    @NoArgsConstructor
    public static class CacheGroup {
        /**
         * 组id
         */
        private String groupId;
        /**
         * 组过期时间
         */
        private long ttl;
        /**
         * 组最大空闲时间
         */
        private long maxIdleTime;
        /**
         * 组最大长度
         */
        private int maxSize;
    }
}

2-2redis配置:RedisConfig.java

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.StringCodec;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.spring.cache.CacheConfig;
import org.redisson.spring.cache.RedissonSpringCacheManager;
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import cn.hutool.core.util.ObjectUtil;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * redis配置
 * @author zengshichang
 */
@Slf4j
@Configuration
@EnableCaching
@EnableConfigurationProperties(RedissonProperties.class)
public class RedisConfig extends CachingConfigurerSupport {
    @Autowired
    private RedissonProperties redissonProperties;
    @Autowired
    private ObjectMapper objectMapper;
    @Bean
    public RedissonAutoConfigurationCustomizer redissonCustomizer() {
        return config -> {
            config.setThreads(redissonProperties.getThreads())
                .setNettyThreads(redissonProperties.getNettyThreads())
                .setCodec(new StringCodec());
            RedissonProperties.SingleServerConfig singleServerConfig = redissonProperties.getSingleServerConfig();
            if (ObjectUtil.isNotNull(singleServerConfig)) {
                // 使用单机模式
                config.useSingleServer()
                    .setTimeout(singleServerConfig.getTimeout())
                    .setClientName(singleServerConfig.getClientName())
                    .setIdleConnectionTimeout(singleServerConfig.getIdleConnectionTimeout())
                    .setSubscriptionConnectionPoolSize(singleServerConfig.getSubscriptionConnectionPoolSize())
                    .setConnectionMinimumIdleSize(singleServerConfig.getConnectionMinimumIdleSize())
                    .setConnectionPoolSize(singleServerConfig.getConnectionPoolSize());
            }
            // 集群配置方式 参考下方注释
            RedissonProperties.ClusterServersConfig clusterServersConfig = redissonProperties.getClusterServersConfig();
            if (ObjectUtil.isNotNull(clusterServersConfig)) {
                config.useClusterServers()
                    .setTimeout(clusterServersConfig.getTimeout())
                    .setClientName(clusterServersConfig.getClientName())
                    .setIdleConnectionTimeout(clusterServersConfig.getIdleConnectionTimeout())
                    .setSubscriptionConnectionPoolSize(clusterServersConfig.getSubscriptionConnectionPoolSize())
                    .setMasterConnectionMinimumIdleSize(clusterServersConfig.getMasterConnectionMinimumIdleSize())
                    .setMasterConnectionPoolSize(clusterServersConfig.getMasterConnectionPoolSize())
                    .setSlaveConnectionMinimumIdleSize(clusterServersConfig.getSlaveConnectionMinimumIdleSize())
                    .setSlaveConnectionPoolSize(clusterServersConfig.getSlaveConnectionPoolSize())
                    .setReadMode(clusterServersConfig.getReadMode())
                    .setSubscriptionMode(clusterServersConfig.getSubscriptionMode());
            }
            log.info("初始化 redis 配置");
        };
    }

    /**
     * 整合spring-cache
     */
    @Bean
    public CacheManager cacheManager(RedissonClient redissonClient) {
        List<RedissonProperties.CacheGroup> cacheGroup = redissonProperties.getCacheGroup();
        Map<String, CacheConfig> config = new HashMap<>(16);
        for (RedissonProperties.CacheGroup group : cacheGroup) {
            CacheConfig cacheConfig = new CacheConfig(group.getTtl(), group.getMaxIdleTime());
            cacheConfig.setMaxSize(group.getMaxSize());
            config.put(group.getGroupId(), cacheConfig);
        }
        return new RedissonSpringCacheManager(redissonClient, config, new JsonJacksonCodec(objectMapper));
    }
}

注:EnableConfigurationPropertiess用法:文章来源地址https://www.toymoban.com/news/detail-734600.html

@EnableConfigurationProperties(RedissonProperties.class)是一个注解,用于启用将指定的配置类作为配置属性进行自动配置。

在Spring Boot应用程序中,通常使用@EnableConfigurationProperties注解来启用将配置属性绑定到特定的配置类。在这种情况下,RedissonProperties是用于绑定与Redisson相关的配置属性的配置类。

通过使用@EnableConfigurationProperties(RedissonProperties.class)注解,可以实现以下几点:

将RedissonProperties类作为配置属性类进行注册和加载。
自动将应用程序配置文件中与RedissonProperties相关的属性值与RedissonProperties类中的字段进行绑定。
可以通过在代码中注入RedissonProperties类的实例来获得配置的属性值,从而在应用程序中使用这些属性值。
这样,通过@EnableConfigurationProperties(RedissonProperties.class)注解,Redisson的配置属性就会被正确地加载和绑定,并能够在应用程序中使用这些配置。

2.3:Redisson使用

@RequiredArgsConstructor
@Service
@Slf4j
@RefreshScope
public class ServiceImpl implements IService {

    @Autowired
    private RedisDao redisDao;
}

到了这里,关于redisson配置类---SpringBoot集成、redis单机和集群模式配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot 集成 Redis集群配置公网IP连接报私网IP连接失败问题

    创建6个配置文件:redis-6381.conf,redis-6382.conf,redis-6383.conf,redis-6384.conf,redis-6385.conf, redis-6386.conf。配置文件内容如下: 1:代码配置 2:yml 配置 让Redis暴露公网IP其实在redis.conf配置文件里是能找到的,这里我们可以手动指定Redis的公网IP、端口以及总线端口(默认服务端口加10000)。

    2024年02月01日
    浏览(38)
  • springboot如何集成redis哨兵集群?

    redis主从集群和redis sentinel集群都配置完毕了, 现在我们需要了解spring boot 如何连接上该集群 才能用上这两个集群带来的便利 为什么需要关注这个问题? 怎么配置? 记住. 本章是针对redis已经配置了主从集群和哨兵集群的, 而非cluster集群模式 没有 Redis Sentinel 架构之前,如果主节

    2024年02月09日
    浏览(56)
  • redis搭建主从集群模式+整合springboot

    建议先看教程哦!! 最简单的,最常见的模式。 在主从复制中,数据库分为两类: 主数据库(master) 从数据库(slave) 其中主从复制有如下** 特点 **: 主数据库 可以进行 读写 操作,当读写操作导致数据变化时会自动将数据同步给从数据库 复制的数据流是单向的,只能由主节点

    2024年01月20日
    浏览(33)
  • redis搭建哨兵集群模式+整合springboot

    Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的。哨兵顾名思义,就是用来监控的,主要作用就是监控主从集群,自动切换主备,完成集群故障转移。 ​ Sentinel 哨兵Sentinel 哨兵介绍 ​ Sentinel 哨兵本质上是一个运行在特殊模式下的Re

    2024年01月19日
    浏览(50)
  • 【Spring Boot 3】【Redis】集成Redisson

    软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时

    2024年01月23日
    浏览(50)
  • Redisson 集成SpringBoot 详解

    redison-spring-boot-starter依赖于与最新版本的spring-boot兼容的redison-spring数据模块。降级redison弹簧数据模块(如有必要),以支持以前的spring Boot版本: redisson-spring-data module name Spring Boot version redisson-spring-data-16 1.3.y redisson-spring-data-17 1.4.y redisson-spring-data-18 1.5.y redisson-spring-data-2x

    2024年02月07日
    浏览(41)
  • springboot集成redisson

    不需要额外引入 其他关于redis的依赖,在redisson的依赖文件中已经专门引入了 在resources目录下,即application.yml同级目录创建redisson.yml,内容可参考redisson官网WIKI。 可以手动通过注入config方式进行RedissonClient客户端的配置,如果通过redisson.yml方式进行配置,则不需要额外的con

    2024年02月08日
    浏览(43)
  • Redis 主从配置、哨兵、集群模式

    目录 Redis 主从复制  主从复制的作用: 主从复制流程: 搭建Redis 主从复制 安装 Redis 环境准备 修改内核参数 安装redis 创建redis工作目录 环境变量 定义systemd服务管理脚本 修改 Redis 配置文件(Master节点操作) 修改 Redis 配置文件(Slave节点操作) 验证主从效果 Redis 哨兵模式

    2024年02月12日
    浏览(59)
  • Redisson集群管理工具、对Redis节点的操作

    Redisson集群管理工具提供了通过程序化的方式,像redis-trib.rb脚本一样方便地管理Redis集群的工具。 以下范例展示了如何创建三主三从的Redis集群。 主节点127.0.0.1:7000的从节点有127.0.0.1:7001和127.0.0.1:7002。 主节点127.0.0.1:7003的从节点是127.0.0.1:7004。 主节点127.0.0.1:7005没有从节点。

    2024年02月07日
    浏览(37)
  • Redisson—独立节点模式和集群管理工具

    目录 一、集群管理工具 1、 创建集群 2、踢出节点 3、 数据槽迁移 4 、添加从节点 5、 添加主节点 二、独立节点模式 1、 概述 2、配置方法 2.1. 配置参数 2.2. 通过JSON和YAML配置文件配置独立节点 3、 初始化监听器 4、 嵌入式运行方法 5、命令行运行方法 6、Docker方式运行方法

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包