Springboot 中 Redis Pipelining(管道)的使用
前言
Springboot 中 Redis Pipelining(管道)的使用
一、说明
Redis 提供 Pipelining(管道) 的支持,它可以发送多条指令到 redis 服务端而不用等待服务端的回复,并且读取服务端的回复在一步操作中。当你需要连续发送多条命令的时候 Pipelining(管道) 可以改善性能。
使用场景,需要将很多消息按类型分类存到 Redis,消息刷新很快,则可以使用 Pipelining;
以下例子展示将 Message 集合按照元素类型分类存放到 Redis(元素类型作 Redis 的 key,元素名称作 Redis key下 Map 的 key,元素值作为 Map 的 value ),并设置 10 分钟过期时间
@Autowired
private RedisTemplate redisTemplate;
public void test(List<Message> data) {
redisTemplate.executePipelined((RedisCallback<Object>) connection -> {
for (int i = 0, len = data.size(); i < len; i++) {
connection.hSet(data.get(i).getType().getBytes(StandardCharsets.UTF_8),
data.get(i).getName().getBytes(StandardCharsets.UTF_8),
data.get(i).getValue().getBytes(StandardCharsets.UTF_8));
connection.expire(data.get(i).getType().getBytes(StandardCharsets.UTF_8, 600L);
}
return null;
});
}
按照类型批量取 Map
@Autowired
private RedisTemplate redisTemplate;
public void test(List<String> Types) {
List<Map> redisResults = redisTemplate.executePipelined((RedisCallback<Object>) connection -> {
for (String type : Types) {
connection.hGetAll(type.getBytes());
}
return null;
});
}
总结
如果这篇博客对你有帮助的话,记得给我点个赞,你的鼓励是对我最大的支持!谢谢。◕‿◕。