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 | 第9章 Lua 脚本与排序《Redis设计与实现》