Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
list链表类型: 内部存储的元素有排序功能、会存在多个相同的元素。
该Sort Set是两种类型(list和set)的集中体现,称为排序集合类型。
和set一样sorted set也是string类型元素的集合,
该Sort set类型适合场合:
获得最热门(回复量)前5个帖子信息:
select * from message order by backnum desc limit 5;
(以上需求可以通过简单sql语句实现,但是sql语句比较耗费mysql数据库资源 [或者是全部记录受到影响被查询 或者 是建立索引消耗额外资源])
案例:利用sort set实现获取最热门的前5帖子信息
(之前的set集合类型每个元素就只是一个 值)
我们只做一个sort set排序集合,里边只保留5个元素信息,该5个元素是回复量最高的,
每个帖子被回复的时候,都有机会进入该集合里边,但是只有回复量最高的前5个帖子会存在于在集合,回复量低的就被删除。
1 ZADD key score1 member1 [score2 member2]
4 ZINCRBY key increment member
5 ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
7 ZRANGE key start stop [WITHSCORES]
8 ZRANGEBYLEX key min max [LIMIT offset count]
9 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
11 ZREM key member [member ...]
13 ZREMRANGEBYRANK key start stop
14 ZREMRANGEBYSCORE key min max
15 ZREVRANGE key start stop [WITHSCORES]
16 ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
19 ZUNIONSTORE destination numkeys key [key ...]
🐳 作者:hiszm 📢 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,万分感谢。 💬 留言:同时 , 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |