redis 排序命令

Posted _风的线条

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 排序命令相关的知识,希望对你有一定的参考价值。

排序 sort

redis基本命令--集合(set)类型 中,我们提到过有序集合。有序集合常见的场景是大数据排序

除了有序集合外,我们可以借助redis的sort命令来排序。

lpush mylist 4 2 6 1 3 7
sort mylist

在对有序集合排序的时候会忽略元素的分数,之针对元素自身的值进行排序

zadd myzset 50 2 40 3 20 1 60 5
sort myzset
## 结果是 1 2 3 5;分数 50 ..会被忽略

sort 命令还可以通过 ALPHA 参数实现按照字典顺序排列非数字元素:

lpush mylistalpha a c e d B C A 
sort mylistalpha
## 这一步会报错。因为sort会试图将元素转成浮点数,但是转换失败
sort mylistalpha alpha
## 实测结果:1) "a"2) "A"3) "B"4) "c"5) "C"6) "d"7) "e
## 理论结果为 A B C a c d e 

sort命令可以逆序排序:

sort mylist desc

sorrt 分页; sort 可以和 limit 组合使用

sort mylist limit 1 2

上面结果表示对 mylist 排序后,从第2位取2个元素

by 参数/参考键

lpush sortbylist 2 1 3 
set itemscore:1 50
set itemscore:2 100
set itemscore:3 -10
## 根据得分逆序排序:结果为 2 1 3
sort sortbylist by itemscore:* desc

当参考键不包括 "*" 时,sort 命令讲不会执行排序操作,因为redis 认为这是没有意义的。

当某个参考键不存在的时候,回默认参考键的值为 0

lpush sortbylist 5 
sort sortbylist by itemscore:* desc
# 结果为 2 4 1 5 3;5的参考键不存在,默认为 > 3 的 -10

以上是关于redis 排序命令的主要内容,如果未能解决你的问题,请参考以下文章

Redis入门 - 排序

Redis | 第9章 Lua 脚本与排序《Redis设计与实现》

Redis学习笔记 Redis事务生存时间及排序

Redis | 第9章 Lua 脚本与排序《Redis设计与实现》#yyds干货盘点#

redis排序

redis学习二 排序