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

SORT命令的实现

SORT

SORT 命令的排序操作由快速排序算法实现。

例子

rpush numbers 5 3 4 1 2

lrange numbers 0 -1 //无排序

sort numbers //排序 正序

ALPHA选择的实现

SORT ALPHA

例子

sadd alphabet a b c d e f g

smembers alphabet //无排序

sort alphabet ALPHA//排序

ASC选项和DESC选项的实现

SORT [ASC|DESC]

BY选项的实现

BY选项默认假设权重键保存的值为数字值,如果权重键保存的是字符串的话,那么就需要在使用BY选项的同时,配合使用ALPHA选项。

zadd test-result 3.0 jack 3.5 peter 4.0 tom

zrange test-result 0 -1

mset peter_number 1 tom_number 2 jack_number 3

sort test-result BY _number

LIMIT选项的实现

通过limit选项,可以让sort命令只返回一部分以及排序的元素。

limit选项的格式为 LIMIT

参数表示要跳过的已经排序的元素数量 参数表示跳过给定数量的已排序元素之后,要返回的已排序元素数量。 GET选项的实现 通过使用get选项,我们可以让sort命令在对键进行排序之后,根据被排序的元素,以及get选项所指定的模式,查找并返回某些键的值 例子 sadd students "peter" "jack" "tom" // set peter-name "peter white" set jack-name "jack snow" set tom-name "tom smith" sort students ALPHA GET _name // 返回结果 1)"jack snow" 2)"peter white" 3)"tom smith" SORTE 选项的实现 通过sorte选项,我们可以将排序结果保存在指定的键里面,并在需要时重用这个排序结果。 例子 sort students ALPHA sorte sorted_students 注意:如果sorted_students这个键存在,则会被删除,然后重新设置sorted_students的空白键 多个选项的执行顺序 1.排序(命令会使用ALPHA、[ASC|DESC]、BY选项) 2.限制(limit) 3.获取外部键(get选项) 4.保存排序结果集(sorte选项 ) 5.向客户端返回排序结果集 选择的摆放顺序 除了 GET 选项之外, 调整选项的摆放位置不会影响 SORT 命令的排序结果。 内容来自:这本书