首页 > 解决方案 > 使用通配符使用 RedisTemplate zSet 从 redis 中获取所有值并删除所有值

问题描述

如何使用 Java 中的通配符键的 RedisTemplate zSet 值从 redis 中获取和删除所有值以进行 removeRangeByScore 和 reverseRangeByScore 操作

我正在尝试使用 * 连接,但它不起作用。

redisTemplate.opsForZSet().removeRangeByScore(empId + "*", Double.MIN_VALUE, Double.MAX_VALUE)

寻找

redisTemplate.opsForZSet().reverseRangeByScore(empId + "*", Double.MIN_VALUE, Double.MAX_VALUE);

标签: javaredis

解决方案


您需要首先获得一组键:

Set<String> keys = redisTemplate.keys(empId + "*");

然后你需要循环:

for (String key : keys) {
    redisTemplate.del(key);
}

请注意,从 zSet 中删除所有值与删除 zSet 相同。Redis 会删除空集。这就是我del在上面使用的原因。

要按分数以相反的顺序获取所有值,请确保使用Double.NEGATIVE_INFINITYand Double.POSITIVE_INFINITY,因为这些将转换为-infand+inf在 Redis 中。您还需要遍历此处的所有键。


推荐阅读