优化代码 if (keys == null) { return 0L; } Long num = 0L; for (String key : keys) { num += jedisCluster.del(buildKey(key)); } return num;
时间: 2024-02-14 19:06:25 浏览: 69
这段代码的功能是删除 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 的删除结果。
阅读全文