java - 使用通配符使用 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);
解决方案
您需要首先获得一组键:
Set<String> keys = redisTemplate.keys(empId + "*");
然后你需要循环:
for (String key : keys) {
redisTemplate.del(key);
}
请注意,从 zSet 中删除所有值与删除 zSet 相同。Redis 会删除空集。这就是我del
在上面使用的原因。
要按分数以相反的顺序获取所有值,请确保使用Double.NEGATIVE_INFINITY
and Double.POSITIVE_INFINITY
,因为这些将转换为-inf
and+inf
在 Redis 中。您还需要遍历此处的所有键。
推荐阅读
- jenkins - 收到新工作后取消 Jenkins 工作
- c++ - MFC ComboBox 下拉列表未突出显示所选项目
- angular - FlexLayout,组件没有使用满空间
- c# - EF Core 表首先不在数据库中保存实体
- permissions - 从频道 Discord.JS 中删除所有人权限
- html - 我的css背景颜色没有改变,为什么?
- ssl - 设置配置器/安装程序/身份验证器 'webroot' -> 'nginx' 的标志太多
- html - Rails 重定向到锚点无法滚动
- laravel - Vue / Laravel - Formdata.append 在编辑时显示空值
- spring-boot - Google Secret Manager:不要通过 Spring Boot 从中获得价值