1、需求背景
项目需要提供一个管理界面给内部人员操作用户信息,需要在修改用户信息后删除用户的redis缓存。用户所在的区域不同,其redis服务地址也不相同,因此需要管理多个redis连接,且redis要求以集群方式并支持ssl进行连接。
2、实现方案
为每个区域定义一个regionId,用来关联不同区域的redis连接信息,将redis连接信息存于数据库中。采用工具类的方式,构建RedisTemplate对象存于以Map形式存于工具类中的静态变量当中,key为regionId,value为RedisTemplate。每个RedisTemplate构建时机为第一次需要用到它时。
3、具体实现
1、首先是存储redis信息的实体类
public class RedisInfo {
private String regionId;
private String ip;
private int port;
private String pwd;
// 是否使用ssl
private boolean ssl;
// 超时时间
private long timeout;
}
2、其次是工具类的实现
public class RedisManage {
private static Map<String, RedisTemplate<String, Object>> redisTemplateMap = new HashMap<>();
/**
* 获取RedisTemplate方法
* @param redisInfo 数据库连接信息
* @return
*/
public static RedisTemplate<String, Object> getRedisTemplate(RedisInfo redisInfo) {
// 首先从map中获取
RedisTemplate<String, Object