SortedSet(zset)是 redis 提供的一个非常特别的数据结构,它在集合的基础上为每一个元素都关联了一个分数,这相当于 java 中的 Map<String,Double>,可以给每一个元素赋予一个score权重。另一方面又像TreeSet,内部的元素会按照权重score进行排序。
相关操作命令 127.0.0.1:6379> zadd board 81 java 75 python 90 c++ # 使用 zadd 增加一到多个value/score对,score 放在前面 (integer) 3 127.0.0.1:6379> zscore board java # 使用 zscore 获取 java 的 score "81" 127.0.0.1:6379> zrange board 0 -1 # 使用 zrange 获取指定区间(0 -1 表示全部)上的降序排名 1) "python" 2) "java" 3) "c++" 127.0.0.1:6379> zrange board 0 -1 withscores # 带上 winthscores 可以一并获取元素的 score 1) "python" 2) "75" 3) "java" 4) "81" 5) "c++" 6) "90" 127.0.0.1:6379> zrevrange board 0 -1 withscores # 使用 zrevrange 获取指定区间(0 -1 表示全部)上的升序排名 1) "c++" 2) "90" 3) "java" 4) "81" 5) "python" 6) "75" 127.0.0.1:6379> zrangebyscore board -inf +inf withscores # 使用 zrangebyscore 获取 负无穷(-inf)到 正无穷(+inf)区间上所以元素的降序排名 1) "python" 2) "75" 3) "java" 4) "81" 5) "c++" 6) "90" 127.0.0.1:6379> zrevrangebyscore board +inf -inf withscores # 使用 zrevrangebyscore 获取正无穷(+inf)到 负无穷(-inf)区间上所以元素的升序排名 1) "c++" 2) "90" 3) "java" 4) "81" 5) "python" 6) "75" 127.0.0.1:6379> zcard board # 使用 zcard 计算 board 集合的元素个数 (integer) 3 127.0.0.1:6379> zrem board java python # 使用 zrem 删除 board 集合中的一个或多个元素 (integer) 2 应用场景商品销售,软件下载等各种排行榜
参考通俗易懂的Redis数据结构基础教程
[Redis基础:基本介绍、redis的应用场景、五种数据类型、持久化操作、主从模式]