🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
和set类型一样,sorted set也是string类型元素的集合,因为元素是有序的,所以使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素,它也很擅长排序。 应用场景:获取网站中点击量最高的前n篇文章,等等。 为了详细的解释下面每个命令,先拟定一个应用场景; 假设用sorted set记录网站每篇文章的点击量,如果key为artHits,则: 1.【 zadd key v k 】 往key中添加一个元素,k为键,v为值。如:zadd artHits 99 12表示id为12的文章点击量为99次。 2.【 zrange key start end 】 根据v的值由小到大进行排序来获得start到end之间的元素。 注:0表示第一个元素,-1表示最后一个元素,-2表示倒数第二个元素,以此类推,如果要获取第一个到倒数第三个之间的元素,命令为:zrange key 0 -3。 3.【 zrevrange key start end 】 同上,根据v的值由大到小进行排序来获得start到end之间的元素。可以轻松取出点击量最高的前n篇文章。 4.【 zremrangebyrank key start end 】 删除集合中的元素。排序的方式为按照v由小到大的顺序,如果要删除key集合中的第一个值,则运行 zremrangebyrank artHits 0 0;删除前3个值:zremrangebyrank artHits 0 2。 5.【 zcard 】 返回key集合中元素的个数。 6.【 zrank key k 】 返回值k在集合key中排第几位,是按照v由小到大的顺序。排第一名返回0,第二返回1,以此类推。 7.【 zrevrank key k 】 同上,不同的是,按照v由大到小的顺序。可以轻松取出点击量最高的文章。 8.【 zscore key k 】 取出集合key中键为k对应的值v。 9.【 zrem key k 】 删除集合中指定元素。 10.【 zincrby key num k 】 给集合key中的元素k加上num,值针对整型。比如 zincrby artHits 3 12,给id为12的文章加上3个点击量。此时zscore artHits 12的结果是99+3为102。 Redis 有序set添加,删除和测试中的O(1)的存在成员(固定时间,无论里面包含的元素集合的数量)。列表的最大长度为232- 1元素(4294967295,超过4十亿每个元素的集合)。 例子 redis 127.0.0.1:6379> ZADD tutorials 1 redis (integer) 1 redis 127.0.0.1:6379> ZADD tutorials 2 mongodb (integer) 1 redis 127.0.0.1:6379> ZADD tutorials 3 mysql (integer) 1 redis 127.0.0.1:6379> ZADD tutorials 3 mysql (integer) 0 redis 127.0.0.1:6379> ZADD tutorials 4 mysql (integer) 0 redis 127.0.0.1:6379> ZRANGE tutorials 0 10 WITHSCORES 1) "redis" 2) "1" 3) "mongodb" 4) "2" 5) "mysql" 6) "4" 在上述例子中的三个值由命令ZADD插入其分数在redis排序集合并命名tutorials。