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 设置生存时间,毫秒时间 ...
随机推荐
- Spark Core 资源调度与任务调度(standalone client 流程描述)
Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动: 集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...
- DELPHI中的快捷方式一览(完全版)
1.SHIFT+鼠标左键 先选中任一控件,按键后可选中窗体(选中控件后按Esc效果一样)2.Shift+F8 调试时弹出CPU窗口.3.Shift+F10 等于 ...
- js中不能做变量名的字符
JavaScript中不能作为变量名的关键字和保留字总结: 1.js中的关键字: break case catch continue default delete do else finally fo ...
- 【洛谷P1104】生日
题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行,第1行为OI组总人数n:第2行至第n ...
- 2017ACM暑期多校联合训练 - Team 7 1009 HDU 6128 Inverse of sum (数学计算)
题目链接 Problem Description There are n nonnegative integers a1-n which are less than p. HazelFan wants ...
- 福建工程学院寒假作业第三周B题
第二集 你说,你的女朋友就是你的电脑 TimeLimit:2000ms MemoryLimit:128000KB 64-bit integer IO format:%lld Problem De ...
- (5)剑指Offer之栈变队列和栈的压入、弹出序列
一 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 问题分析: 先来回顾一下栈和队列的基本特点: 栈:后进先出(LIFO) 队列: ...
- PHP对象2: 构造函数与析构函数
当一个对象的所有引用都没有时, 一个对象才消失, 这时才执行析构函数 <?php class firecat{ public $name; function say(){ echo 'I lov ...
- 关于分布式Session 的几种实现方式
分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4. ...
- Oracle常用sql语句(二)之组函数、多表查询
DML(数据操纵语言) INSERT .UPDATE. DELETE 插入操作:INSERT: 语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...); 注 ...