没有找到jedisCluster.pipelined方法
时间: 2023-02-08 14:31:03 浏览: 120
JedisCluster是一个Java客户端库,用于连接到Redis集群。在JedisCluster中没有pipelined方法。
如果你想使用pipeline,推荐使用Jedis, 它是一个单节点的Redis的Java客户端库。
相关问题
jedis.pipelined 有什么用
jedis.pipelined 是 Jedis 库中的一个方法,它可以将多个 Redis 命令放入一个管道中执行,这样可以提高 Redis 的执行效率。在管道中执行命令时,Jedis 会一次性将所有命令发送给 Redis 服务器,而不是一条一条发送,这样可以减少网络延迟和带宽消耗。
优化代码 if (keys == null) { return 0L; } Long num = 0L; for (String key : keys) { num += jedisCluster.del(buildKey(key)); } return num;
这段代码的功能是删除 Redis 中的多个 key,可能需要优化的地方有:
1. 在 for 循环中使用 Long 类型的 num 变量进行累加,每次都需要创建一个 Long 对象,可以改为使用 long 类型的基本数据类型,避免频繁创建对象。
2. 可以在 for 循环中使用管道(pipeline)批量删除多个 key,避免每次删除都需要与 Redis 进行一次网络请求,提高删除的效率。
优化后的代码如下:
```
if (keys == null || keys.length == 0) {
return 0L;
}
long num = 0L;
try (JedisCluster jedisCluster = getJedisCluster()) {
Pipeline pipeline = jedisCluster.pipelined();
for (String key : keys) {
pipeline.del(buildKey(key));
}
List<Object> results = pipeline.syncAndReturnAll();
for (Object result : results) {
num += (Long) result;
}
} catch (Exception e) {
log.error("delete keys error", e);
}
return num;
```
注意:这里使用了 try-with-resources 来自动关闭 JedisCluster,同时使用了 Pipeline 来批量删除多个 key,并且在删除完成后通过 syncAndReturnAll 方法获取每个 key 的删除结果。
阅读全文