Redis中的排序sort
SORT命令对number列表元素排序
使用ALPHA选项对一个包含字符串值的集合键进行排序
SORT<key>命令的实现
SORT命令的最简单执行形式为:
SORT<key>
这个命令可以对一个包含数字键key进行排序。如上面第一个例子所示。
服务器执行SORT numbers命令的详细步骤如下:
ALPHA选项的实现
通过使用ALPHA选项,SORT命令可以对包含字符串值的键进行排序
服务器执行步骤如下:
ASC选项和DESC选项的实现
默认情况,SORT命令执行升序排序,排序后的结果按照值的大小从小到大排列,
SORT<key> 和 SORT<key> ASC命令的执行结果一样
执行SORT命令时使用DESC选项,可以让命令执行降序排序,让排序后的结果按值的大小从大到小排列。
BY选项的实现
在默认情况下,SORT命令使用被排序键包含的元素作为排序的权重,元素本身决定了元素在排序后所处的位置。
通过BY选项,SORT命令可以指定某些字符串键,或者某个哈希键所包含的某些域(filed)来作为元素的权重,对一个键进行排序。下面的例子就是按照水果的价钱排序:
带有ALPHA选项的BY选项的实现
BY选项默认假设权重键保存的值为数字值,如果权重键保存的是字符串值的话,就需要在使用BY选项时,配合使用ALPHA选项。
使用水果编号为权重对fruits集合进行排序:
LIMIT选项的实现
在默认情况下,SORT命令总会将排序后的所有元素都返回给客户端
使用LIMIT选项,我们可以让SORT命令只返回其中一部分已排序的元素。
LIMIT <offset> <count>
offset表示要跳过已排序元素数量
count表示跳过给定数量的已排序元素之后,要返回的已排序元素数量。
GET选项的实现
默认情况下,SORT命令在对键进行排序之后,总是返回被排序键本身所包含的元素。
通过使用GET选项,我们可以让SORT命令返回GET选项所指定模式对应的某些键的值。
STORE选项的实现
默认情况,SORT命令只返回排序结果,不保存排序结果。
通过使用STORE选项,我们可以将排序结果保存在指定的键里面,并在有需要时重用这个排序结果。
多个选项的执行顺序
按照选项来划分的话,一个SORT命令的执行过程可以分为以下五步:
在以上这些步骤中,后一个步骤必须在前一个步骤完成之后进行。
举个例子:
总结: