SpringMVC+MyBatis环境,Redis做缓存,求解如何在运行中自由切换Redis库??

Redis中有好几个库,想做缓存的时候将不同业务的数据分别存放在Redis的不同的库中,我用的是Spring的RedisTemplate类,这个类可以直接操作,但是我试了好多,就只能操作一个库,里面的JedisConnectionFactory类中,只能选择一个库,求解大神,怎么样才能在运行中自由的切换想要连接的库,达到将不同业务的数据存入不同的库这个目的!!

选择对应的数据库,select

其实想redis这种nosql,再去使用spring其实意义没多大,个人不建议在redis-client上在封装一层spring-data。反而把简单的事情变复杂了。
下面我试了一下是可以的做到切换数据库。

 JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
 jedisConnectionFactory.setDatabase(i);
 stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
 ValueOperations valueOperations = stringRedisTemplate.opsForValue();

可以初始化多个RedisTemplate类,对应各个配置,然后再aop层做数据库名的区分来决定具体使用哪个redis库

这个和项目中使用读写分离基本是一样的,可以利用spring 的aop来实现 但是你的业务就需要有一定的命名规范,不同的业务执行不同的库 就是 这样的,希望可以帮助到你

可以配置多个数据源,也就是多个dataSource,这样在使用的时候有针对性的去使用。如果单单是想做集群的话,我建议可以直接使用现成的codis去完成,codis本身就是redis的集群版本有许多组建可以直接使用的,你要不试试看呢