Redis学习篇(十)之排序
SORT
- 按照键值从小到大或者从大到小的顺序进行排序
对数字进行排序
语法:SORT key [DESC]
默认情况下,是升序排序,可以指定DESC进行降序排序
对字母进行排序
语法:SORT key ALPHA [DESC]
默认情况下,是升序排序,可以指定DESC进行降序排序
使用LIMIT限制返回的数量
语法: LIMIT offset number
offset是偏移量
number是限制的数量根据外部的key的权重进行排序
LPUSH uid 1
SET user_name_1 admin1
SET user_level_1 999 LPUSH uid 2
SET user_name_2 admin2
SET user_level_2 99 LPUSH uid 3
SET user_name_3 admin3
SET user_level_3 900 LPUSH uid 4
SET user_name_4 admin4
SET user_level_4 299 LPUSH uid 5
SET user_name_5 admin5
SET user_level_5 478 # 默认是根据uid升序排序
SORT uid # 根据用户的级别进行排序
# 执行顺序是,首先找出uid,然后将其逐个对应到user_level_*上面,
# 按照user_level_*的值进行排序,返回uid
SORT uid BY user_level_*
根据排序结果取出相应的键值
# 先根据uid进行排序,再将uid对应到user_name_*上面,返回user_name_*
SORT uid GET use_name_* # 先按照user_level排序, 再获取user_name
SORT uid BY user_level_* GET user_name_* # 先根据uid进行排序,再同时获取用户名和等级
SORT uid GET user_name_* GET user_level_* # 使用"#"获取编号
SORT uid GET # GET user_level_* GET user_level_* # 当BY对象不存在时,就不排序
SORT uid BY noExists GET # GET user_level_* GET user_name_*注意
SORT命令的时间复杂度是O(n+mlogm)
n表示要排序的列表或者集合中的元素的个数,m表示要返回元素的个数
- 尽可能减少待排序中键的个数(使n减少)
- 使用LIMIT参数限制获取元素的个数(使m减少)
- 大量排序时,通过STORE缓存结果
Redis学习篇(十)之排序的更多相关文章
- Redis学习篇(十二)之管道技术
通过管道技术降低往返时延 当后一条命令不依赖于前一条命令的返回结果时,可以使用管道技术将多条命令一起 发送给redis服务器,服务器执行结束之后,一起返回结果,降低了通信频度.
- 【Redis学习之十】Redis集群维护
Redis集群增删节点部署环境 redis-3.0.0 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1.202.192.168.1.203. ...
- Redis学习篇(八)之连接相关
PING 测试客户端和服务器之间的连接是否有效,有效返回PONG ECHO 打印特定的信息, 如: ECHO 'HELLO WORLD' QUIT/EXIT 断开当前客户端与服务器之间的连接,可以重连 ...
- Redis学习篇(六)之ZSet类型及其操作
ZADD 作用: 将元素及其分数添加到集合中 语法: ZADD key score membre [score member] 当集合元素已经存在时,再次添加会更新其分数 当score是 +inf 时 ...
- Redis学习篇(七)之事务
Redis中的事务 开启事务 MULTI:开启事务,事务块中多条语句会按照顺序放入队列当中,最后由EXEC来执行 MULTI INCT counter1 INCR counter2 INCR coun ...
- Redis学习篇(四)之List类型及其操作
Redis的List是一个双向链表 LPUSH 作用:向列表左端添加元素 语法:LPUSH key value value... 从左到右逐个添加到左端,前面的先添加, 可以一次添加多个元素 RPUS ...
- Redis学习笔记十:独立功能之监视器
通过执行 monitor 命令可以让客户端自己变成一个监视器,实时接收并打印当前处理的命令请求的相关信息. 127.0.0.1:6379> monitor OK 1451752646.83727 ...
- Redis学习篇(十一)之发布订阅
PUBLISH/SUBSCRIBE 发布订阅的原理 包含两个角色,一个是发布者, 一个是订阅者 订阅者可以订阅一个或者多个频道(channel) 发布者可以向指定的频道发布信息 通过SUBSCRIBE ...
- Redis学习篇(九)之生存时间
EXPIRE 设置生存时间,以秒为单位 #### EXPIREAT 设置生存时间,秒时间戳格式 #### PEXPIRE 设置生存时间,毫秒为单位 #### PEXPOREAT 设置生存时间,毫秒时间 ...
随机推荐
- new Date('2014/04/30') 和 new Date('2014-04-30') 的区别
new Date('2014/04/30') Wed Apr 30 2014 00:00:00 GMT+0800 (中国标准时间) new Date('2014-04-30'); Wed Apr 30 ...
- Eclipse 断点调试
Eclipse 开发专用的Debug模式,用于发现问题解决问题. 1. 设置断点,程序会在改位置停止. 2. 按F5(step into), F6(step over)执行.F5指跳入,逐语句.会进入 ...
- 阿里云一键web环境包
下载地址:https://files.cnblogs.com/files/wordblog/af3a48ef-3a13-479e-85c9-ead61173126c.zip 先把安装包传到服务器上用w ...
- Lucene7.2.1系列(三)查询及高亮
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 一 准备 创建项目并添加Maven依赖 <dependenc ...
- cookie 跨域的问题
今天研究一天发现cookie无法设置除当前域名或者其父域名之外的其他domain. 这个是浏览器出于对cookie的保护造成的,也就是cookie无法跨域设置. 对于子域名也有如下规则,当前域名只能设 ...
- STL hashtable阅读记录
unordered_map,unordered_set等相关内容总结: unordered_map和unordered_set是在开发过程中常见的stl数据结构.其本质是hashtable.在SGI_ ...
- Linux下多路径multipath配置【转】
一.multipath在redhat 6.2中的基本配置: 1. 通过命令:lsmod |grep dm_multipath 检查是否正常安装成功.如果没有输出说明没有安装那么通过yum功能安装一下 ...
- C#:Excel上传服务器后导入数据库
- Python 库汇总中文版
这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文本处理.自然语言处理.机器学习. ...
- idea关于断点的补充
黑背景版: 先编译好要调试的程序.1.设置断点