redis的五种数据类型---Sorted Set类型
来源:互联网 发布:学而知不足,思而得远虑 编辑:程序博客网 时间:2024/06/06 14:09
前言
有序集合类型是Redis五种数据类型中最高级的、也是最复杂的类型。
继上篇讲解set后,我们来看set与sorted set区别
与set相比,sorted sets就是将set中的元素增加一个权重参数:score,使得集合中元素能够按score有序排列,是插入有序的,即自动排序。这里需要注意的是尽管sorted-sets的成员必须是唯一的,但是score是可以重复的。当需要一个有序的并且不重复的集合列表时,这时就可以考虑sorted set数据结构
应用场景
1、twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
2、一个游戏的用户得分排行榜
3、带权重的队列,比如普通消息的 score 为1,重要消息的 score 为2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。
例子
假设要处理考试成绩,首先要将学生姓名以及成绩录入
kongweiyan 成绩是70
liming 成绩是60
jenny 成绩是50.5
录入完毕了,下面我们进行取出数据,正序(ZRANGE),倒序(ZREVRANGE)
如果,想要一个分段的统计呢,比如要60分以上的,即及格的,正序(ZRANGEBYSCORE),倒序(ZREVRANGEBYSCORE)
实现原理
用到了两个数据结构:hash table和skip list(跳跃表),hash table中放的是成员到score的映射,跳跃表是所有的成功。 hash table是使用redis中的dict(即字典)来实现的。主要是为了保证查询效率为O(1)。但是跳跃表是主要是保证元素有序并能够保证INSERT和REMOVE操作是O(logn)的复杂度。至于详细的跳跃表的基本原理,可以参考下这篇文章:http://blog.sina.com.cn/s/blog_72995dcc01017w1t.html
延伸
分页查询
注:key1是这个sortedset的key,最后一行:zrange key1 3 5:意思是pagesize=3,取第二页,下标3到5
根据下标去取,可以实现任意分页查询,性能也很好,实现高速分页查询。
小结
redis的五种基本数据类型到此就介绍完毕了,在具体使用中,要结合不同的场景进行使用,还有一些其他功能的使用场景:如:订阅-发布系统;事务等等。下篇将介绍redis的一些基本操作
- redis的五种数据类型---Sorted Set类型
- redis的五种数据类型---set类型
- redis五种数据类型的使用
- Redis 五种数据类型的使用
- redis五种数据类型的使用
- redis五种数据类型的使用
- redis五种数据类型的使用
- redis五种数据类型的使用
- redis五种数据类型的使用
- Redis的五种数据类型
- redis常见的五种数据类型
- Redis常用的五种数据类型
- redis的五种数据类型
- Redis常用的五种数据类型
- Redis支持的五种数据类型
- Redis的五种数据结构类型
- Redis五种数据类型
- 【Redis】五种数据类型
- Oracle数据库 视图(虚拟表)创建及使用
- Win7,64位,VS2013,WinPcap4.1.3详细配置教程
- RabbitMQ消息处理机制fanout,direct,topic,header
- 通过按钮 启动NSTimer定时器 控制视图view移动效果
- AlarmManager的定时器方法使用注意事项
- redis的五种数据类型---Sorted Set类型
- LISP函数大全
- xml解析
- 问题三十三:怎么用ray tracing画特殊长方体(box)
- 数据库连接池,设置连接池数量、plsql工具查询待连接数据库的排队数量,工程设置最大最小连接数量
- JS滚轮事件(mousewheel/DOMMouseScroll)了解
- memcache实现session共享
- stm32 外部中断
- invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_Run