SpringBoot连接多个redis

本文介绍了如何在SpringBoot项目中连接并配置多个Redis实例,包括导入Lettuce依赖,配置文件设置,编写Config文件,以及测试和创建Redis工具类以方便使用。特别指出,从SpringBoot 2.x开始,官方推荐使用Lettuce代替Jedis作为Redis客户端。
摘要由CSDN通过智能技术生成

在网上搜索了好久,发现没有多少可以有用的。翻了一下源码,自己写一个。

有兴趣的可以了解一下lettuce。从SpringBoot2.x之后,redis原先使用的Jedis被lettuce替代。

1、导入pom依赖

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.6.7</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>

2、在配置文件中写redis连接信息

# 自定义多个redis源
definition:
  common:
    redis:
      host: 10.138.8.85
      port: 6379
      password: Haier,123
      timeout: 5000
  company:
    redis:
      host: 10.138.8.85
      port: 6379
      password: Haier,123
      timeout: 5000

3、编写config文件

@Configuration
public class RedisConfig {

    /*--------------------------- 公共信息使用的redis: commonRedisTemplate ----------------------------------*/

    @Value("${definition.common.redis.host}")
    private String commonHost;
    @Value("${definition.common.redis.port}")
    private String commonPort;
    @Value("${definition.common.redis.password}")
    private String commonPassword;
    @Value("${definition.common.redis.timeout}")
    private String commonTimeout;


    @Bean("commonRedisTemplate")
    public RedisTemplate<String,String> getCommonRedisTemplate(){
        return build(commonHost,commonPort,commonPassword,commonTimeout);
    }


    // ---------------------------------------公司信息使用的redis: companyRedisTemplate---------------------------------------------------

    @Value("${definition.company.redis.host}")
    private String companyHost;
    @Value("${definition.company.redis.port}")
    private String companyPort;
    @Value("${definition.company.redis.password}")
    private String companyPassword;
    @Value("${definition.company.redis.timeout}")
    private String companyTimeout;

    @Bean("companyRedisTemplate")
    public RedisTemplate<String,String> getCompanyRedisTemplate(){
        return build(companyHost,companyPort,companyPassword,companyTimeout);
    }


    private RedisTemplate<String,String> build(String host,String port,String password,String timeout){
        //单机部署
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(host,Integer.parseInt(port));
        redisStandaloneConfiguration.setPassword(password);
        //集群部署
        //RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(Arrays.asList(commonHost.split(";")));
        //redisClusterConfiguration.setPassword(commonPassword);
        LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
                .commandTimeout(Duration.ofMillis(Long.parseLong(timeout)))
                .poolConfig(new GenericObjectPoolConfig())
                .build();
        LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration,clientConfig);
        //必须初始化实例
        connectionFactory.afterPropertiesSet();
        //如果要使pool参数生效,一定要关闭shareNativeConnection
        //lettuceConnectionFactory.setShareNativeConnection(false);

        RedisTemplate<String, String> commonRedisTemplate = new StringRedisTemplate();
        commonRedisTemplate.setConnectionFactory(connectionFactory);
        // key、hash的key 采用 String序列化方式 【可自行配置】
        commonRedisTemplate.setKeySerializer(new StringRedisSerializer());
        commonRedisTemplate.setHashKeySerializer(new StringRedisSerializer());
        // value、hash的value 采用 String 序列化方式
        commonRedisTemplate.setValueSerializer(n
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值