springboot项目中使用redisTemplate批处理pipeline获取Set集合中的数据
public List<MyStockPool> getList(String key) {
log.info("getList start:{}",LocalDateTime.now());
RedisSerializer serializer = redisTemplate.getStringSerializer();
//获取前缀key先所有的key
Set keys = redisTemplate.keys(key + "*");
List list = redisTemplate.executePipelined((RedisCallback) connection -> {
//获取Set集合中的所有数据
keys.forEach(ke -> connection.sMembers(serializer.serialize("\"" + ke.toString() + "\"")));
//必须返回null,Pipeline执行完之后会将值自动返回到数组中
return null;
});
List<MyStockPool> lastList = new ArrayList<>();
for (Object o : list) {
List<MyStockPool> myStockPools = JSON.parseArray(o.toString(), MyStockPool.class);
lastList.addAll(myStockPools);
}
return lastList;
}