【学习笔记】Redis(5)-排序

Redis 的 SORT 命令可以对列表、集合或有序集合的值进行排序。

以下代码展示了 SORT 命令对列表键进行排序的例子:

redis > RPUSH numbers 5 2 1 4 3
(integer) 5
redis > LRANGE numbers 0 -1
1) "5"
2) "2"
3) "1"
4) "4"
5) "3"
redis > SORT numbers
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
以下代码展示了 SORT 命令和 BY 选线对有序集合进行排序的例子:
redis > ZADD result 5.0 dog 1.0 pig 3.0 cat
(integer) 3

#为各个元素设置序号
redis > MSET cat_number 1 dog_number 2 pig_number 3
OK

#以序号为权重,对有序集合中的元素进行排序
redis > SORT result BY *_number
1) "cat"
2) "dog"
3) "pig:

SORT 命令包含的可选参数非常多,接下来我们就来了解一下这些参数。

(1)SORT key ALPHA。使用 ALPHA 选项,SORT 命令可以对包含字符串值的键进行排序。

(2)SORT numbers ASC。使用 ASC 选项,SORT 命令可以执行升序排序,使排序结果按照值,从小到大进行排序(默认情况下使用 ASC)。

(3)SORT numbers DESC。使用 DESC 选项,SORT 命令可以执行降序排序,使排序结果按照值,从大到小进行排序。

(4)SORT result BY *_number。使用 BY 选项,SORT 命令可以指定某些字符串键或者某个哈希键所包含的某些属性来作为元素的权重,对一个键进行排序。BY 选项默认权重键保存的值为数字,如果权重键保存的是字符串的话,那么就需要在使用 BY 选项的同时,使用 ALPHA 选项(SORT result BY *_name ALPHA)。

(5)SORT key LIMIT OFFSET COUNT。默认情况下,SORT 命令总是返回排序后的所有元素,通过使用 LIMIT 选项,可以让 SORT 命令只返回其中一部分元素,OFFSET 表示跳过的元素数量,COUNT 表示返回的元素数量,例如:

#result = ["b", "a", "c", "e", "d"]
#跳过前两个元素,返回之后的三个元素
redis > SORT result ALPHA LIMIT 2 2
1) "c"
2) "d"
(6)SORT key GET pattern。使用 GET 选项,可以在排序之后,根据被排序的元素,以及 GET 选项所指定的模式,查找并返回某些键的值。例如:
redis > SET alice-name "Alice White"
redis > SET bob-name "Bob Smith"
redis > SET tom-name "Tom Snow"
redis > SADD friends "bob" "tom" "alice"
#首先对 friends 集合进行排序,得到:
#1) "alice"
#2) "bob"
#3) "tom"
#然后根据这三个结果来匹配模式,获取并返回 alice-name、bob-name、tom-name 的值
redis > SORT friends ALPHA GET *-name
1) "Alice White"
2) "Bob Smith"
3) "Tom Snow"
(7)SORT key1 STORE key2。默认情况下,SORT 命令只返回排序结果,并不修改原来 key1 中的元素顺序,但是我们可以通过使用 STORE 来将排序结果保存在指定的键里面,在有需要的时候,可以重用这个结果:
#friends = ["bob", "tom", "alice"]
redis > SORT friends ALPHA STORE result
(integer) 3
redis > LRANGE result
1) "alice"
2) "bob"
3) "tom"






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值