位置:首页  >   数据库  > 关于redis 的排序

关于redis 的排序

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

SORT命令的实现
SORT <key>
SORT 命令的排序操作由快速排序算法实现。
例子
rpush numbers 5 3 4 1 2
lrange numbers 0 -1 //无排序
sort numbers  //排序 正序

ALPHA选择的实现
SORT <key> ALPHA
例子
sadd alphabet a b c d e f g
smembers alphabet //无排序
sort alphabet ALPHA//排序

ASC选项和DESC选项的实现
SORT <key> [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 <offset> <count>
<offset> 参数表示要跳过的已经排序的元素数量
<count> 参数表示跳过给定数量的已排序元素之后,要返回的已排序元素数量。

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 命令的排序结果。

内容来自:<redis设计与实现>这本书


文章属性
精彩评论