redis--11.1--操作--对列表类型,集合类型,有序集合类型进行键排序

redis–11.1–操作–对列表类型,集合类型,有序集合类型进行键排序


1、命令

sort key [alpha]  [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [asc|desc]  store desc**
alpha:

按字典排列非数字元素,如果元素是数字,可不用

BY pattern:

参考键,最多一个by,可以将集合元素内容按照给定pattern组合成新的key,并按照新key中对应的内容进行排序
注意:当pattern不包含*,不排序,当参考键不存在,默认参考键值为0

GET pattern:

可以有多个GET ,通过get选项去获取指定pattern作为新key对应的字符串值

store desc:

将结果缓存到desc中

性能:时间复杂度 O(n+mlog(m))

n是要排序列表元素个数,
m是返回的元素个数,
n越大性能越小
建议:n 和M尽量小,如果排序数据大,尽量使用store参数将结果缓存

2、操作

对有序集合的元素值排序
127.0.0.1:6380> zadd user 12 lilia 13 lilib 8 lilic
(integer) 3

127.0.0.1:6380> sort user alpha
1) "lilia"
2) "lilib"
3) "lilic"
BY pattern:可以将集合元素内容按照给定pattern组合成新的key,并按照新key中对应的内容进行排序
127.0.0.1:6379> lpush mylist 2 1 3
(integer) 3
127.0.0.1:6379> set itemscore:1 50
OK
127.0.0.1:6379> set itemscore:2 100
OK
127.0.0.1:6379> set itemscore:3 -10
OK
127.0.0.1:6379> sort mylist by itemscore:* desc
1) "2"
2) "1"
3) "3"
127.0.0.1:6379> sort mylist by itemscore:* asc
1) "3"
2) "1"
3) "2"
127.0.0.1:6379> 

当参考键不存在,默认参考键值为0
127.0.0.1:6379> lpush mylist 4
(integer) 4
127.0.0.1:6379> sort mylist by itemscore:* desc
1) "2"
2) "1"
3) "4"
4) "3"

GET pattern:通过get选项去获取指定pattern作为新key对应的字符串值
127.0.0.1:6379> sort mylist by itemscore:* desc get itemscore:*
1) "100"
2) "50"
3) (nil)
4) "-10"

再举例
127.0.0.1:6379> set 1 aaa
OK
127.0.0.1:6379> set 2 bbb
OK
127.0.0.1:6379> set 3 ccc
OK
127.0.0.1:6379> set 4 ddd
127.0.0.1:6379> sort mylist by itemscore:* desc get *
1) "bbb"
2) "aaa"
3) "ddd"
4) "ccc"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值