SpringBoot连接多个Redis或者Redis里的多个不同的库_springboot 连接多个redis

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

}
}

从配置类中可以看出不同的RedisTemplate的Bean实例是使用了同一个Redis的不同库,再对不同Redis的Bean进行封装成工具类,就能实现操作同一个Redis里的不同库了。要想实现连接不同的Redis,只需要将对应的Redis地址写进配置里即可。

二、通过传入的Redis配置参数来实现动态连接Redis不同的库或者不同的Redis

2.1 RedisTemplate的工厂类,类里Redis的地址、端口、密码等都可以通过传参来设定,这里只传入一个库的不同索引。

import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;

/**
* 负责创建RedisTemplate实例
*/
public class RedisTemplateFactory {

private static String host = “localhost”;

private static int port = 6379;

private static String password = “”;

private static int timeout = 3000;

private static int maxActive = 100;

private static int maxIdle = 8;

private static int minIdle = 0;

private static int maxWait = -1;

/**
* 用于创建redis的Bean
* @return
*/
public static RedisTemplate<String, Object> getRedisTemplate(Integer databaseIndex) {
RedisTemplate<String, Object> redisTemplate = getRedisConnectionFactory(databaseIndex); // 建立Redis的连接
redisTemplate.afterPropertiesSet();
return redisTemplate;
}

/**
* 是负责建立Factory的连接工厂类
* @param database
* @return
*/
public static RedisTemplate<String, Object> getRedisConnectionFactory(int database) {
JedisConnectionFactory jedisFactory = new JedisConnectionFactory();
// jedisFactory.setHostName(host);
// jedisFactory.setPort(port);
// jedisFactory.setPassword(password);
jedisFactory.setDatabase(database);

JedisPoolConfig poolConfig = new JedisPoolConfig(); // 进行连接池配置
poolConfig.setMaxTotal(maxActive);
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMinIdle(minIdle);
poolConfig.setMaxWaitMillis(maxWait);
jedisFactory.setPoolConfig(poolConfig);
jedisFactory.afterPropertiesSet(); // 初始化连接池配置

RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setConnectionFactory(jedisFactory);
return redisTemplate;
}
}

注意:在getRedisTemplate(Integer databaseIndex)方法返回RedisTemplate实例前必须要加入下面这句,原因请百度;

redisTemplate.afterPropertiesSet();

2.2 RedisUtil的工厂类

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

public class RedisUtilFactory {

private RedisTemplate<String, Object> redisTemplate;

public RedisTemplate<String, Object> getRedisTemplate() {
return redisTemplate;
}

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}

// ============================= 公共方法 ============================

/**
* 获取所有的key
* @param pattern
* @return
*/
public Set keys(String pattern) {
return getRedisTemplate().keys(pattern);
}

/**
* 获取所有的数据
* @param pattern
* @return
*/
public List getAllData(String pattern){
Set keysList = keys(pattern);
return getRedisT

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值