package com.jake.bpmmanager.util;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
public class RedisUtil {
/**
* @param redisTemplate 基于springboot的Redis模板对象
*/
public static void setDB4RedisTemplate(RedisTemplate<String, String> redisTemplate, int dbIndex) {
LettuceConnectionFactory lcf = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
if (lcf != null) {
lcf.setDatabase(dbIndex);
redisTemplate.setConnectionFactory(lcf);
}
}
}
注意,使用上述方法进行Redis数据库切换后,整个项目的RedisTemplate连接数据库都会被切换。比如,在UserServiceImpl类中将注入的RedisTemplate的数据库切换到db1,那么EmployeeServiceImpl注入的RedisTemplate的数据库也会切换至db1。所以这种方法并不是线程安全的,可能会导致数据库中没有存放期待的数据。
可以新建新的Jedis连接,Jedis与RedisTemplate彼此独立,或许可以做到一个项目中访问多个Redis数据库。