redis 多维度排序_redis 排序

使用sort命令可以对给定的链表、集合、有序集合中的元素进行排序。redis默认将要排序的元素看作数字,封装成双精度的浮点数进行比较、排序redis内部使用快速排序算法进行排序;sort实现:服务器执行sort members命令的详细步骤:创建一个和members长度相同的数组,该数组的每个项都是一个redisSortObject结构;遍历数组,将各个数组项的obj指针分别指向members列表...
摘要由CSDN通过智能技术生成

使用sort命令可以对给定的链表、集合、有序集合中的元素进行排序。redis默认将要排序的元素看作数字,封装成双精度的浮点数进行比较、排序

redis内部使用快速排序算法进行排序;

sort实现:服务器执行sort members命令的详细步骤:

创建一个和members长度相同的数组,该数组的每个项都是一个redisSortObject结构;

遍历数组,将各个数组项的obj指针分别指向members列表的各个项,构成obj指针和列表项之间的一对一关系;

遍历数组,将各个obj指针所指向的列表项转成一个double浮点数(或根据选项转成字符串),并将其保存在相应数组项的score属性中;

根据score属性,对数组进行排序;

遍历数组,将各个obj指针所指向的列表向作为排序结果返回给客户端;

一般用法:1

2

3

4

5

6

7

8

9

10

11127.0.0.1:6379> lrange list1 0 -1

1) "3"

2) "6"

3) "1"

4) "9"

127.0.0.1:6379> sort list1

1) "1"

2) "3"

3) "6"

4) "9"

1)使用alpha选项,对字符串进行排序:

默认情况下,redis是按照数字进行排序的,通过alpha选项可以按照字符串排序。1

2

3

4

5127.0.0.1:6379> sort list2 alpha

1) "a"

2) "g"

3) "y"

4) "z"

2)使用asc、desc选项,进行升序、降序排序:

默认情况下, redis是按照升序排的,可以指定desc选项进行降序排列。1

2

3

4

5127.0.0.1:6379> sort list1 desc

1) "9"

2) "6"

3) "3"

4) "1"

使用limit分页显示排序结果:

用法:sort key limit offset countoffset:跳过已经排序元素数量;

count:要返回已排序元素数量;1

2

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值