网站页面做海报用什么软件,国内网站建设网站排名,织梦网站代码,网站推广方案途径文章目录 简介SORT命令的实现ALPHA选项的实现ASC和DESCBYLIMITGET命令 类似映射STORE选项的实现多个命令的执行顺序 简介
Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。
SORT命令的实现
服务器执行SORT numbers 命令的详细步骤如下#xff1a; 1#… 文章目录 简介SORT命令的实现ALPHA选项的实现ASC和DESCBYLIMITGET命令 类似映射STORE选项的实现多个命令的执行顺序 简介
Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。
SORT命令的实现
服务器执行SORT numbers 命令的详细步骤如下 1创建一个个和numbers列表长度相同的数组该数组的每个项都是个redis.h/redis SortObject结枸如图 2通历数组将各个数组项的obj指针分别指向numbers列表的各个项构成obj指针和列表项之间的一对一关系。
3遍历数组将各个obj指针所指向的列表项转换成一个double类型的浮点数并将这个浮点数保存在相应数组项的u.score属性里面。
4根据数组项u.score屆性的值对数组进行数字值排序排序后的数组项按u.score属性的值从小到大排列如图所示。
5遍历数组将各个数组项的obj指针所指向的列表项作为排序结果返回给客户端程序首先访问数组的索引0返回u.score值为1.0的列表项1然后访问数组的索引1,返回u.score值为2.0的列表项2最后访问数组的索引2返回u.score值为3.0的列表项3”。
其他SORTkey命令的执行步骤也和这里给出的SORTnumber命令的执行步骤类似。
ALPHA选项的实现
通过使用ALPHA选项SORT命令可以对包含字符串值的键进行排序:
SORT key ALPHA服务器执行SORT fruits ALPHA命令的详细步骤如下 1创建一个redis SortObject结构数组数组的长度等于fruits集合的大小。
2遍历数组将各个数组项的obi指针分别指向fruits集合的各个元素。
3根据obj指针所指向的集合元素对数组进行字符串排序排序后的数组项按集合元素的字符串值从小到大排列。这里类似于Java的字符串排序。
4遍历数组依次将数组项的obi指针所指向的元素返回给客户端。
ASC和DESC
SORT key ASC/DESC
// 默认ASC
// 实现类似于ComparetorBY
1.RPUSH fruit apple banana cherry
// 其实就是一次性塞入多个key-value
2.MSET apple-price 8 banana-price 5.5 cherry-price 7
// 排序
3.SORT fruit by *-price//用ALPHA同理 在最后加上ALPHA就行LIMIT
SORT key by pattern LIMIT offset countGET命令 类似映射
通过使用GET选项我们可以让SORT命令在对键进行排序 之后根据被排序的元素以及GET选项所指定的模式查找并返回某 些键的值。
STORE选项的实现
在默认情况下SORT命令只向客户端返回排序结果而不保存排序结果。但是通过使用STORE选项我们可以将排序结果保存在指定的键里面并在有需要时重用这个排序结果:
SORT key STORE new_key多个命令的执行顺序
如果按照选项来划分的话一个SORT命令的执行过程可以分为以下四步:
1)排序:在这一步命令会使用ALPHA、ASC或DESC、BY这几 个选项对输入键进行排序并得到一个排序结果集。
2)限制排序结果集的长度:在这一步命令会使用LIMIT选项 对排序结果集的长度进行限制只有LIMIT选项指定的那部分元素会被 保留在排序结果集中。
3)获取外部键:在这一步命令会使用GET选项根据排序结果 集中的元素以及GET选项指定的模式查找并获取指定键的值并用 这些值来作为新的排序结果集。
4)保存排序结果集:在这一步命令会使用STORE选项将排序 结果集保存到指定的键上面去。
5)向客户端返回排序结果集:在最后这一步命令遍历排序结果集并依次向客户端返回排序结果集中的元素。
执行命令
SORT key ALPHA DESC BY by-pattern LIMIT offset count GET get- pattern STORE store_key
顺序
1. SORT key ALPHA DESC BY by-pattern
2. LIMIT offset count
3. GET get-pattern
4. STORE store_key