1、sort

排序最常见的是sort命令,可以对列表或者有序集合排序,最简单的排序方式如下:

> lpush list
(integer)
> lpush list
(integer)
> lpush list
(integer)
> sort list
) "
) "
) "

该命令常与alpha、desc、limit等搭配使用。

2、BY参数

上述的使用方法比较简单,有时候无法满足人们的需求,以学生成绩为例,人们需要按照成绩,来排序,从而得到一个相应的学号的列表,这样比较复杂的排序使用上述的方法就不好操作了,因此需要用BY参数来操作。

首先准备一个学号的列表,且最终希望这个列表按照学生的成绩排列。

> lpush list
(integer) 

给每个学生设置成绩,键名为stuscore:学号

>
OK
>
OK
>
OK
>
OK
>
OK
>
OK
>
OK
>
OK
>  

比较容易看出,第一名是学号为555的学生,最后一名是学号为777的学生。

> sort list by stuscore:* desc
) "
) "
) "
) "
) "
) "
) "
) "
) "

可以看出,BY这个参数的实际作用是:将待排序列表中的每个键值带入到stuscore:*的*中,并对score:*进行排序,从而获得对应的学号列表。

若代入*的键值不存在,则默认为0

> del stuscore:
(integer)
> sort list by stuscore:* desc
) "
) "
) "
) "
) "
) "
) "
) "
) "

3、GET参数

获得到排序后的列表,可以通过这种形式获取对应学号的学生信息,如姓名。

设姓名的键名如:stuname:学号,则可以这样获取:

>  MR.zhang
OK
>  MR.wang
OK
>  MISS.li
OK
>  MISS.lin
OK
> sort list by stuscore:* desc get stuname:*
) (nil)
) (nil)
) "MR.zhang"
) (nil)
) "MISS.lin"
) "MR.wang"
) (nil)
) (nil)
) "MISS.li"

使用get #可以一并输出list中的值

> sort list by stuscore:* desc get stuname:* get #
 ) (nil)
 ) "
 ) (nil)
 ) "
 ) "MR.zhang"
 ) "
 ) (nil)
 ) "
 ) "MISS.lin"
) "
) "MISS.li"
) "
) "MR.wang"
) "
) (nil)
) "
) (nil)
) "

4、store参数

如果想要存储排序的结果,可以将结果存于列表中

> sort list by stuscore:* desc get stuname:* get # store sort.result
(integer)
> lrange sort.result  -
 ) ""
 ) "
 ) ""
 ) "
 ) "MR.zhang"
 ) "
 ) ""
 ) "
 ) "MISS.lin"
) "
) "MISS.li"
) "
) "MR.wang"
) "
) ""
) "
) ""
) "

5、性能优化

根据《redis入门指南》:

sort命令是redis一个很强大且复杂的命令,使用不好很容易成为性能瓶颈,故在开发的时候需要注意这么几点:

1)尽可能减少待排序的元素的数量

2)使用limit,值获取需要的数据

3)如果需要获取的数据量比较大,请用store保存

redis排序的更多相关文章

  1. 三.redis 排序

    本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序.排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT ...

  2. laravel操作Redis排序/删除/列表/随机/Hash/集合等方法全解

    Song • 3563 次浏览 • 0 个回复 • 2017年10月简介 Redis模块负责与Redis数据库交互,并提供Redis的相关API支持: Redis模块提供redis与redis.con ...

  3. Redis - 排序

    SORT 命令格式 SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALP ...

  4. redis的sort排序

    Redis排序命令是sort,完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] ...

  5. 【转载】Redis sort 排序命令详解

    转载地址:http://www.jb51.net/article/69131.htm 本文介绍redis排序命令 redis支持对list,set,sorted set元素的排序 sort 排序命令格 ...

  6. 解决Redis Cluster模式下的排序问题

    通常的redis排序我们可以这么做: 比如按商品价格排序:sort goods_id_set by p_*_price 这样在非集群模式下是没问题的,但如果在集群模式下,就会报错: 说是在集群模式下不 ...

  7. Redis简介 Linux安装Redis Redis使用

    其他一些操作(包括 APPEND.GETRANGE.MSET 和 STRLENGTH 也可用于字符串.请参见http://doc.redisfans.com/string/index.html ) 使 ...

  8. Java连接Redis之redis的增删改查

    一.新建一个maven工程,工程可以以jar的形式或war都行,然后导入正确的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0& ...

  9. Redis常用数据类型及使用场景

    Redis最为常用的数据类型 字符串(String) 字符串列表(list) 字符串集合(set) 哈希(hash) 有序的字符串集合(sorted set) String(字符串) 字符串是最基本的 ...

随机推荐

  1. MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件

    MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...

  2. CSS布局-body高度不等于页面高度

    记录采坑: 博客记录问题,用作回忆用,不喜勿喷! html,body{width: 100%; height: 100%}这是初始定义的宽高.在布局越写越复杂的时候,布局很容易出现问题,例如一个页面中 ...

  3. 201621123075作业07-Java GUI编程

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源 ...

  4. VirtualBox导致Vmware的虚拟机桥接模式网络不通

    VMware内的虚拟机,设置为桥接后,无法连接外网.物理主机IP地址:192.168.0.60,虚拟机IP地址:192.168.0.61,网关地址:192.168.0.1虚拟机网络采用桥接模式: 从物 ...

  5. PHP 第三方支付

    以前事情比较繁忙,压根都没有时间去整理最近的工作. 最近稍微轻松点,就把自己在公司处理的支付业务拿出来,留个纪念,顺道回顾下以前自己支付的知识. 俗话说实践是检验整理的唯一标准,东西做的是否能用,只能 ...

  6. IDEA的十大快捷键

    Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论.每个人都有自己的最爱,想排出个理想的榜单还真是困难.以前也整理过Intellij的快捷键,这次就按 ...

  7. 指导手册02:伪分布式安装Hadoop(ubuntuLinux)

    指导手册02:伪分布式安装Hadoop(ubuntuLinux)   Part 1:安装及配置虚拟机 1.安装Linux. 1.安装Ubuntu1604 64位系统 2.设置语言,能输入中文 3.创建 ...

  8. ACM-ICPC 2018 南京赛区网络预赛B

    题目链接:https://nanti.jisuanke.com/t/30991 Feeling hungry, a cute hamster decides to order some take-aw ...

  9. More is better

    题目描述: Mr Wang wants some boys to help him with a project. Because the project is rather complex, the ...

  10. js带“.”的对象属性名怎么使用

    问题:这样的json对象(event) { "title": "title", "alert":"ding", &quo ...