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);
    }
}

  

posted @   TTTTTTTAO  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示