• SortedSet实现工具类


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

      

  • 相关阅读:
    阿里云的使用运维安装
    阿里云的使用运维安装
    promis:异步编程
    promis:异步编程
    微信开发笔记
    细数那些带打赏功能的平台
    细数那些带打赏功能的平台
    Java Web Services (0)
    4、查询(2)
    COGS——C610. 数对的个数
  • 原文地址:https://www.cnblogs.com/TTTAO/p/15932416.html
Copyright © 2020-2023  润新知