SORT

  1. 按照键值从小到大或者从大到小的顺序进行排序
  • 对数字进行排序

    语法:SORT key [DESC]

    默认情况下,是升序排序,可以指定DESC进行降序排序

  • 对字母进行排序

    语法:SORT key ALPHA [DESC]

    默认情况下,是升序排序,可以指定DESC进行降序排序

  1. 使用LIMIT限制返回的数量

    语法: LIMIT offset number

    offset是偏移量

    number是限制的数量

  2. 根据外部的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_*
  3. 根据排序结果取出相应的键值

    # 先根据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_*
  4. 注意

SORT命令的时间复杂度是O(n+mlogm)

n表示要排序的列表或者集合中的元素的个数,m表示要返回元素的个数

  • 尽可能减少待排序中键的个数(使n减少)
  • 使用LIMIT参数限制获取元素的个数(使m减少)
  • 大量排序时,通过STORE缓存结果

Redis学习篇(十)之排序的更多相关文章

  1. Redis学习篇(十二)之管道技术

    通过管道技术降低往返时延 当后一条命令不依赖于前一条命令的返回结果时,可以使用管道技术将多条命令一起 发送给redis服务器,服务器执行结束之后,一起返回结果,降低了通信频度.

  2. 【Redis学习之十】Redis集群维护

    Redis集群增删节点部署环境 redis-3.0.0 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1.202.192.168.1.203.            ...

  3. Redis学习篇(八)之连接相关

    PING 测试客户端和服务器之间的连接是否有效,有效返回PONG ECHO 打印特定的信息, 如: ECHO 'HELLO WORLD' QUIT/EXIT 断开当前客户端与服务器之间的连接,可以重连 ...

  4. Redis学习篇(六)之ZSet类型及其操作

    ZADD 作用: 将元素及其分数添加到集合中 语法: ZADD key score membre [score member] 当集合元素已经存在时,再次添加会更新其分数 当score是 +inf 时 ...

  5. Redis学习篇(七)之事务

    Redis中的事务 开启事务 MULTI:开启事务,事务块中多条语句会按照顺序放入队列当中,最后由EXEC来执行 MULTI INCT counter1 INCR counter2 INCR coun ...

  6. Redis学习篇(四)之List类型及其操作

    Redis的List是一个双向链表 LPUSH 作用:向列表左端添加元素 语法:LPUSH key value value... 从左到右逐个添加到左端,前面的先添加, 可以一次添加多个元素 RPUS ...

  7. Redis学习笔记十:独立功能之监视器

    通过执行 monitor 命令可以让客户端自己变成一个监视器,实时接收并打印当前处理的命令请求的相关信息. 127.0.0.1:6379> monitor OK 1451752646.83727 ...

  8. Redis学习篇(十一)之发布订阅

    PUBLISH/SUBSCRIBE 发布订阅的原理 包含两个角色,一个是发布者, 一个是订阅者 订阅者可以订阅一个或者多个频道(channel) 发布者可以向指定的频道发布信息 通过SUBSCRIBE ...

  9. Redis学习篇(九)之生存时间

    EXPIRE 设置生存时间,以秒为单位 #### EXPIREAT 设置生存时间,秒时间戳格式 #### PEXPIRE 设置生存时间,毫秒为单位 #### PEXPOREAT 设置生存时间,毫秒时间 ...

随机推荐

  1. Spark Core 资源调度与任务调度(standalone client 流程描述)

    Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动:      集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...

  2. DELPHI中的快捷方式一览(完全版)

    1.SHIFT+鼠标左键    先选中任一控件,按键后可选中窗体(选中控件后按Esc效果一样)2.Shift+F8          调试时弹出CPU窗口.3.Shift+F10         等于 ...

  3. js中不能做变量名的字符

    JavaScript中不能作为变量名的关键字和保留字总结: 1.js中的关键字: break case catch continue default delete do else finally fo ...

  4. 【洛谷P1104】生日

    题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行,第1行为OI组总人数n:第2行至第n ...

  5. 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 ...

  6. 福建工程学院寒假作业第三周B题

    第二集 你说,你的女朋友就是你的电脑 TimeLimit:2000ms  MemoryLimit:128000KB 64-bit integer IO format:%lld   Problem De ...

  7. (5)剑指Offer之栈变队列和栈的压入、弹出序列

    一 用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 问题分析: 先来回顾一下栈和队列的基本特点: 栈:后进先出(LIFO) 队列: ...

  8. PHP对象2: 构造函数与析构函数

    当一个对象的所有引用都没有时, 一个对象才消失, 这时才执行析构函数 <?php class firecat{ public $name; function say(){ echo 'I lov ...

  9. 关于分布式Session 的几种实现方式

    分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4. ...

  10. Oracle常用sql语句(二)之组函数、多表查询

    DML(数据操纵语言) INSERT .UPDATE. DELETE 插入操作:INSERT: 语法: INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...); 注 ...