第21章 排序

Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。

以下代码展示了SORT命令对列表键进行排序的例子:



redis> RPUSH numbers 5 3 1 4 2
(integer) 5

按插入顺序排列的列表元素
redis> LRANGE numbers 0 -1
1) "5"
2) "3"
3) "1"
4) "4"
5) "2"

按值从小到大有序排列的列表元素
redis> SORT numbers
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

以下代码展示了SORT命令使用ALPHA选项,对一个包含字符串值的集合键进行排序的例子:



redis> SADD alphabet a b c d e f g
(integer) 7

乱序排列的集合元素
redis> SMEMBERS alphabet
1) "d"
2) "a"
3) "f"
4) "e"
5) "b"
6) "g"
7) "c"

排序后的集合元素
redis> SORT alphabet ALPHA
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
6) "f"
7) "g"

接下来的例子使用了SORT命令和BY选项,以jack_number、peter_number、tom_number三个键的值为权重(weight),对有序集合test-result中的"jack"、"peter"、"tom"三个成员(member)进行排序:



redis> ZADD test-result 3.0 jack 3.5 peter 4.0 tom
(integer) 3

按元素的分值排列
redis> ZRANGE test-result 0 -1
1) "jack"
2) "peter"
3) "tom"

为各个元素设置序号
redis> MSET peter_number 1 tom_number 2 jack_number 3
OK

以序号为权重,对有序集合中的元素进行排序
redis> SORT test-result BY *_number
1) "peter"
2) "tom"
3) "jack"

本章将对SORT命令的实现原理进行介绍,并说明包括ASC、DESC、ALPHA、LIMIT、STORE、BY、GET在内的所有SORT命令选项的实现原理。

除此之外,本章还将说明当SORT命令同时使用多个选项时,各个不同选项的执行顺序,以及选项的执行顺序对排序结果所产生的影响。