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. 【Project Euler】530 GCD of Divisors 莫比乌斯反演

    [题目]GCD of Divisors [题意]给定f(n)=Σd|n gcd(d,n/d)的前缀和F(n),n=10^15. [算法]莫比乌斯反演 [题解]参考:任之洲数论函数.pdf 这个范围显然 ...

  2. VS 2010 应用程序无法启动

    其实一般遇到这种问题, 不管是debug还是release, 也不用看提示的内存地址, 首先应该想到库是否包含正确. 一个可能的错误就是32位或64位不匹配的错误. 比如环境变量设的是64位的Open ...

  3. html 中的列表

    html 中列表可以分为 1.  无序列表(ul--li 的形式) 2.  有序列表(ol li的形式) 3.  定义列表(dl 的形式) 下面来看几种列表的具体内容: 1.无序列表. 无序列表的格式 ...

  4. bzoj 1072 状压DP

    我们用w[i][j]来表示,i是一个二进制表示我们选取了s中的某些位,j表示这些位%d为j,w[i][j]则表示这样情况下的方案数,那么我们可以得到转移.w[i|(1<<k)][(j*10 ...

  5. http介绍

    1.http特点: 1>简单快捷: 2>灵活: 3>支持客户端.服务器结构: 4>无连接----无连接的含义是限制每次连接只处理一个请求: 5>无状态----无状态是指协 ...

  6. python简单爬虫一

    简单的说,爬虫的意思就是根据url访问请求,然后对返回的数据进行提取,获取对自己有用的信息.然后我们可以将这些有用的信息保存到数据库或者保存到文件中.如果我们手工一个一个访问提取非常慢,所以我们需要编 ...

  7. python基础之上下文管理器

    前言 关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈pyth ...

  8. 【转载】在GitHub上管理项目

    在GitHub上管理项目 新建repository 本地目录下,在命令行里新建一个代码仓库(repository) 里面只有一个README.md 命令如下: touch README.md git ...

  9. html中去掉文本框(input type="text")的边框或只显示下边框

    去掉: <input   type="text"   name="textfield"   style="border:0px;"&g ...

  10. 「caffe编译bug」.build_release/lib/libcaffe.so: undefined reference to cv::imread

    转自:https://www.douban.com/note/568788483/ CXX/LD -o .build_release/tools/convert_imageset.bin.build_ ...