博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot项目中Redis配置多数据库
阅读量:2225 次
发布时间:2019-05-09

本文共 3369 字,大约阅读时间需要 11 分钟。

背景:

一个小需求,单Redis服务实例下根据业务配置多个数据库,需要自定义Redis配置稍作改动才能实现,此时就不能RedisTemplate一步就位了~

注: Redis使用 单线程-多路复用 IO模型 ,别把多业务的并发全加在一个redis实例上,最好多实例或者集群处理!


基本的配置我就不多说了,可以参考我之前的博客:

直接上步骤:

application.yml 中添加参数配置:

redis:  //此处设置多业务对应数据库  database:    fore: 0    wechat: 1  host: 117.133.13.74  password: yjyj  port: 6379  timeout: 3000  pool:    max-idle: 30    min-idle: 0    max-wait: -1

增加自定义配置类:

** * @Author: yuanj * @Date: 2019/2/16 16:35 */@Configuration@EnableAutoConfigurationpublic class RedisConfig {
@Value("${redis.database.fore}") private int foreDatabase; @Value("${redis.database.wechat}") private int wechatDatabase; @Value("${redis.host}") private String host; @Value("${redis.password}") private String password; @Value("${redis.port}") private int port; @Value("${redis.timeout}") private int timeout; @Value("${redis.pool.max-idle}") private int maxIdle; @Value("${redis.pool.min-idle}") private int minIdle; @Value("${redis.pool.max-wait}") private long maxWait; @Bean public JedisPoolConfig getJedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMinIdle(minIdle); jedisPoolConfig.setMaxWaitMillis(maxWait); return jedisPoolConfig; } @Bean(name = "foreRedisTemplate") public RedisTemplate getForeRedisTemplate(){
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); connectionFactory.setPoolConfig(getJedisPoolConfig()); connectionFactory.setDatabase(foreDatabase); //此处配置database connectionFactory.setHostName(host); connectionFactory.setPassword(password); connectionFactory.setPort(port); connectionFactory.setTimeout(timeout); connectionFactory.afterPropertiesSet(); //记得添加这行! StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(connectionFactory); return stringRedisTemplate; } @Bean(name = "wechatRedisTemplate") public RedisTemplate getWechatRedisTemplate(){
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); connectionFactory.setPoolConfig(getJedisPoolConfig()); connectionFactory.setDatabase(wechatDatabase); connectionFactory.setHostName(host); connectionFactory.setPassword(password); connectionFactory.setPort(port); connectionFactory.setTimeout(timeout); connectionFactory.afterPropertiesSet(); StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(connectionFactory); return stringRedisTemplate; }}

测试:

@RestControllerpublic class TestController {
@Autowired private RedisConfig redisConfig; @Autowired private RedisTemplate foreRedisTemplate; @Autowired private RedisTemplate wechatRedisTemplate; @RequestMapping(value = "/testRedis", method = RequestMethod.GET) public String test() {
// RedisTemplate foreRedisTemplate = redisConfig.getForeRedisTemplate(); ValueOperations operations = foreRedisTemplate.opsForValue(); operations.set("age", "11");// RedisTemplate wechatRedisTemplate = redisConfig.getWechatRedisTemplate(); ValueOperations operations2 = wechatRedisTemplate.opsForValue(); operations2.set("address", "bj"); return "OK"; }}

注意:上面既可以直接autowire两个RedisTemplate,也可以通过redisConfig得到。

在这里插入图片描述

o ~


转载地址:http://lrlfb.baihongyu.com/

你可能感兴趣的文章
SpringMVC中乱码解决方案
查看>>
SpringMVC中时间格式转换的解决方案
查看>>
post和get请求相关知识点
查看>>
关于try finally 中的return语句的问题
查看>>
RequestBody/ResponseBody处理Json数据
查看>>
springmvc请求参数获取的几种方法
查看>>
在eclipse中创建和myeclipse一样的包结构
查看>>
Java中的IO流
查看>>
java中的关键字
查看>>
如果某个方法是静态的,它的行为就不具有多态性
查看>>
优化Hibernate所鼓励的7大措施
查看>>
Java 8系列之重新认识HashMap
查看>>
HashMap 、 ArrayList、String 重写了equals方法 而Object类(比如User)没有重写
查看>>
Servlet的生命周期
查看>>
Object中的getClass()返回的是当前运行的类
查看>>
加载驱动程序的方法
查看>>
深入理解java异常处理机制
查看>>
object类的基本方法
查看>>
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>