SortedSet实现工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.connection.RedisZSetCommands; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Set; /** * @author leizige */ @Component public class RedisUtil{ @Resource private ZSetOperations<String, String> zSetOperations; private final Long EMPTY = 0L; /** * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd * key,value已存在,score覆盖 * * @param key * @param value */ public boolean add(String key, String value, double score) { return zSetOperations.add(key, value, score); } /** * 查询集合中指定顺序的值 zrevrange * <p> * 返回有序的集合中,score大的在前面 * * @param key * @param offset * @param count * @return */ public Set<String> reverseRangeByScore(String key, int offset, int count) { return zSetOperations.reverseRangeByScore(key, 1 , Long.MAX_VALUE, (offset - 1 ) * count, count); } /** * ZCARD key * <p> * 返回有序集 key 的基数。 * <p> * 可用版本: * >= 1.2.0 * 时间复杂度: * O(1) * 返回值: * 当 key 存在且是有序集类型时,返回有序集的基数。 * 当 key 不存在时,返回 0 * * @param key * @return */ public Long zCard(String key) { return zSetOperations.zCard(key); } /** * 删除元素 zrem * * @param key * @param value */ public Long remove(String key, String value) { return zSetOperations.remove(key, value); } /** * 移除有序集 key 中,指定排名(rank)区间内的所有成员。 * <p> * 区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 * <p> * 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 * 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。 * 可用版本: * >= 2.0.0 * 时间复杂度: * O(log(N)+M), N 为有序集的基数,而 M 为被移除成员的数量。 * * @param key * @param start * @param end * @return 被移除成员的数量 */ public Long removeRange(String key, long start, long end) { return zSetOperations.removeRange(key, start, end); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!