redis - redis的sort系列核心技术精讲

62 阅读1分钟

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。

首先展示一下redis的sort功能的使用:

# 对数值排序
sort nums
# 对数值倒序
sort nums desc
# 对字符串排序
sort fruits alpha
# 根据其他字段值排序
sort fruits by *-price
# 返回排序后的某段序列值
sort nums limit 2 3
# 返回排序后序列值对应的其他字段值
sort fruits alpha get *-name
# 存储排序结果 lrange遍历
sort fruits alpha store fruits_1

执行顺序是: sort -> limit -> get -> store
注意:除了get以外,其他命令的作用不随位置改变

执行原理是:

1. 针对要排序的集合,创建相同长度的redisSortObject数组,使得每个redisSortObject指向集合的对应元素。
2. 根据排序命令sort,对redisSortObject数组中的元素进行排序。
3. 根据截取命令limit,返回对应位置和数量的排序后的数组。
4. 根据get命令,返回排序后的值对应的键的值。
5. 根据store命令,将排序结果存储到新的列表中;如果组合命令中包含limit,则存储的是limit之后的结果;如果组合命令中有get,则存储的是get后的结果。

实例如下:

sort fruits alpha limit 0 2 get *-name store fruits_1
如果通过 lrange fruits_1 0 3 查看fruits_1的值,
可以看到返回的是依次执行 sortlimit、get 之后的结果

更多信息,请关注微信号
在这里插入图片描述