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

  2. Eclipse 断点调试

    Eclipse 开发专用的Debug模式,用于发现问题解决问题. 1. 设置断点,程序会在改位置停止. 2. 按F5(step into), F6(step over)执行.F5指跳入,逐语句.会进入 ...

  3. 阿里云一键web环境包

    下载地址:https://files.cnblogs.com/files/wordblog/af3a48ef-3a13-479e-85c9-ead61173126c.zip 先把安装包传到服务器上用w ...

  4. Lucene7.2.1系列(三)查询及高亮

    系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 一 准备 创建项目并添加Maven依赖 <dependenc ...

  5. cookie 跨域的问题

    今天研究一天发现cookie无法设置除当前域名或者其父域名之外的其他domain. 这个是浏览器出于对cookie的保护造成的,也就是cookie无法跨域设置. 对于子域名也有如下规则,当前域名只能设 ...

  6. STL hashtable阅读记录

    unordered_map,unordered_set等相关内容总结: unordered_map和unordered_set是在开发过程中常见的stl数据结构.其本质是hashtable.在SGI_ ...

  7. Linux下多路径multipath配置【转】

    一.multipath在redhat 6.2中的基本配置: 1. 通过命令:lsmod |grep dm_multipath  检查是否正常安装成功.如果没有输出说明没有安装那么通过yum功能安装一下 ...

  8. C#:Excel上传服务器后导入数据库

  9. Python 库汇总中文版

    这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文本处理.自然语言处理.机器学习. ...

  10. idea关于断点的补充

    黑背景版: 先编译好要调试的程序.1.设置断点