Spring环境下RedisTemplate同时配置两个数据源的数据进行同步数据
Posted Acmen-zym
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring环境下RedisTemplate同时配置两个数据源的数据进行同步数据相关的知识,希望对你有一定的参考价值。
大概执行逻辑
1、从第一个库中获取需要同步的资源存入到map中 ,一个Redis的配置是在yml配置文件中
2、循环map然后配置新的连接库,配置完毕后将数据进行缓存
@Autowired
private ItemPropsRedis propsRedis;
private List<Long> numIids = Lists.newArrayList(50000697L, 162103L, 50011277L,
50012042L, 50012027L, 201309706L, 50011165L, 122654005L, 50013878L,
50012010L, 162703L, 50020835L, 50010817L, 50012028L, 50025883L, 122690003L,
50012825L, 50012019L);
public void syncRedisDate() {
Map<Long, List<ItemProp>> map = new LinkedHashMap<>();
for (Long cid : cids) {//循环获取第一个Redis中的缓存数据
List<ItemProp> itemProps = propsRedis.getItemProps(cid);
if (CollectionUtils.isEmpty(itemProps)) continue;
map.put(cid, itemProps);//数据存入map中
}
for (Map.Entry<Long, List<ItemProp>> entry : map.entrySet()) {
save(entry.getKey().toString(), entry.getValue());//开始同步到另外一个Redis中
}
}
private void save(String cid, List<ItemProp> itemProps) {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("localhost");
jedisConnectionFactory.setPassword("password");
jedisConnectionFactory.setPort(6479);
jedisConnectionFactory.setDatabase(0);
jedisConnectionFactory.afterPropertiesSet();
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory);
redisTemplate.afterPropertiesSet();//更新配置信息
ValueOperations<String, List<ItemProp>> operations = redisTemplate.opsForValue();
System.out.println("itemProps = " + itemProps.size());
operations.set(cid, itemProps);
List<ItemProp> itemProps2 = operations.get(cid);
System.out.println("itemProps2 = " + itemProps2.size());
}
以上是关于Spring环境下RedisTemplate同时配置两个数据源的数据进行同步数据的主要内容,如果未能解决你的问题,请参考以下文章