专栏首页关忆北.Redis配置多数据源

Redis配置多数据源

使用场景

Redis具有多个databases,通过CONFIG GET databases命令可查看,Redis不同的database间具有数据隔离性,即在项目中我们配置一个databases 0信息后,并无法获取其他databases的数据,所以,当我们业务中需要获取其他databases时,便需要配置多Redis数据源。

配置文件

以properties为例

#redis databases 1
spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.password=123456
spring.redis.port=6379
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=1
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.timeout=7000

#redis databases 2  unread只是业务一个标识,可自定义
spring.unread.redis.database=2
spring.unread.redis.host=127.0.0.2
spring.unread.redis.password=123456
spring.unread.redis.port=6380
spring.unread.redis.pool.max-idle=8
spring.unread.redis.pool.min-idle=1
spring.unread.redis.pool.max-active=8
spring.unread.redis.pool.max-wait=-1
spring.unread.redis.timeout=7000

RedisTemplate配置

创建一个基于读取Redis配置的Bean

@Configuration
@ConditionalOnClass({JedisConnection.class, RedisOperations.class, RedisProperties.Jedis.class})
public class Redis4UnReadMessageConfig {
    @Bean(name = "redisUnReadTemplate")
    public FastJsonRedisTemplate redisTemplate(
        //与properties一一对应
            @Value("${spring.unread.redis.host}") String hostName,
            @Value("${spring.unread.redis.port}") int port,
            @Value("${spring.unread.redis.password}") String password,
            @Value("${spring.unread.redis.database}") int index
    ) {
        FastJsonRedisTemplate temple = new FastJsonRedisTemplate();
        temple.setConnectionFactory(
                connectionFactory2(hostName, port, password,index));
        return temple;
    }
    @Deprecated
    public RedisConnectionFactory connectionFactory(String hostName, int port, String password, int maxIdle,
                                                    int minIdle, int index, long maxWaitMillis) {
        JedisConnectionFactory jedis = new JedisConnectionFactory();
        jedis.setHostName(hostName);
        jedis.setPort(port);
        if (!StringUtils.isEmpty(password)) {
            jedis.setPassword(password);
        }
        if (index != 0) {
            jedis.setDatabase(index);
        }
        jedis.setPoolConfig(poolCofig(maxIdle, minIdle, maxWaitMillis));
        // 初始化连接pool
        jedis.afterPropertiesSet();
        RedisConnectionFactory factory = jedis;
        return factory;
    }
    @Deprecated
    public JedisPoolConfig poolCofig(int maxIdle, int minIdle, long maxWaitMillis) {
        JedisPoolConfig poolCofig = new JedisPoolConfig();
        poolCofig.setMaxIdle(maxIdle);
        poolCofig.setMinIdle(minIdle);
        poolCofig.setMaxWaitMillis(maxWaitMillis);
        return poolCofig;
    }

    /**
     * @Author: Jeremy
     * @Description: springboot2.x默认使用lettuce取代jedis
     * @Date: 2020/5/8 14:17
     */
    public RedisConnectionFactory connectionFactory2(String hostName, int port, String password,int index){

        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
        configuration.setHostName(hostName);
        configuration.setPort(port);
        configuration.setPassword(password);
        configuration.setDatabase(index);
        LettuceConnectionFactory factory = new LettuceConnectionFactory(configuration);
        factory.afterPropertiesSet();
        return factory;
    }
}

注解使用

将多数据源的redisTemplate注入使用

注意: 配合@Autowired使用@Qualifier将上文Config定义的Bean注入。

    @Autowired
    @Qualifier("Redis4UnReadMessageConfig")
    public FastJsonRedisTemplate Redis4UnReadMessageConfig;
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Spring Boot支持多Redis数据源

    十毛
  • Spring boot配置多个Redis数据源操作实例

    平时都是使用本地环境的单Redis情况比较多,在集群环境的情况下连接多个Redis数据库是很正常的情况。

    程序员小强
  • Spring多数据源配置系列(一)——多数据源配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    逝兮诚
  • 配置druid数据源

    配置druid数据源

    Java架构师必看
  • 配置JBoss数据源

    配置JBoss数据源,为什么要在JBoss中配置数据源?这其实是面向对象思想的一种体现:通过容器管理对数据库的访问。

    星哥玩云
  • Spring配置数据源

    applicationContext.xml加载jdbc.properties配置文件获得连接信息

    兮动人
  • tomcat数据源配置

    配置webRoot/WEB-INF/aurora.database/datasource.config文件:

    栋先生
  • 配置ODBC数据源

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

    DannyHoo
  • SpringBoot 配置多数据源

    项目Git地址:SpringBoot 配置多数据源:Jacob-multi-data-source

    Jacob丶
  • springboot多数据源配置

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在a...

    爱撸猫的杰
  • Springboot配置 Druid 数据源

    注意:配置中都是以 spring.datasource.druid 开头,使用驼峰命名

    崔笑颜
  • SpringBoot:配置数据源详解

    对于数据访问层,无论是nosql还是sql数据库,SpringBoot的底层都是用Springdata去统一处理

    冷环渊
  • SpringBoot 多数据源 配置

    特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章...

    收心
  • Tomcat配置JNDI数据源

    本文将介绍Tomcat配置JNDI数据源的方法,主要分为配置局部数据源(仅供单个应用使用)和全局数据源(所有用该Tomcat的应用都可以使用) 一、思考 从我们...

    陈树义
  • 统一配置数据源:蓝鲸配置平台

    我们知道CMDB最早来自于ITIL,后来逐渐被各种IT管理工具吸纳,成为管理工具的一部分。例如ITSM中有CMDB,网管工具有中有CMDB,监控工具中有CMDB...

    嘉为蓝鲸
  • IntelliJ IDEA 如何配置数据源

    在 IntelliJ IDEA 中,可以通过打开 Data Sources and Drivers 对话框来配置数据源和测试你的数据库连接。

    HoneyMoose
  • spring配置多数据源——mybatis

    这篇文章是配置mybatis多数据源文章,如果是hibernate的话也是没什么影响,配置都是差不多的。

    陈灬大灬海
  • Spring Boot + Mybatis多数据源和动态数据源配置

    转载自 http://blog.csdn.net/neosmith/article/details/61202084

    allsmallpig
  • resin 4.0数据源的配置

    在resin 的conf 文件下有resin.xml 我们在这里能够配置数据源以及配置项目

    全栈程序员站长

扫码关注腾讯云开发者

领取腾讯云代金券