排序
Redis 的 SORT 命令可以对,列表键,集合键,有序集合键进行排序
升序,降序
redis> rpush ints 3 5 4 2 1
(integers) 5
// 默认按照数字大小进行升序排序
redis> sort ints
"1" "2" "3" "4" "5"
// 使用降序排序
redis> sort ints desc
"5" "4" "3" "2" "1"
alpha 选项
使用 alpha 选项,按照字符串值大小进行排序
redis> sadd strs "a" "c" "d" "e" "b"
(integer) 5
// 根据字符串值大小进行排序
redis> sort strs alpha
"a" "b" "c" "d" "e"
by 选项
根据指定某些字符串键,或者某个哈希键所包含的某些字段(field)来作为元素的权重,进行排序
redis> sadd students "jack" "tom" "ivy"
(integers) 3
// 根据字符串键进行排序
redis> mset jack-age 20 tom-age 30 ivy-age 25
OK
// 根据年龄排序
redis> sort students by *-age
"jack" "ivy" "tom"
// 根据哈希表进行排序
redis> hset jack age 30
OK
redis> hset tom age 25
OK
redis> hset ivy age 35
OK
redis> sort students by *->age
"tom" "jack" "ivy"
by + alpha 选项
by 选项默认假设权重值保存的是数字值,如果权重键保存的值是字符串,那么需要结合 alpha 选项。
// 根据学好权重字符串值进行排序
redis> mset jack-no "no-200" ivy-no "no-100" tom-no "no-300"
OK
redis> sort students by *-no alpha
"ivy" "jack" "tom"
limit 选项
redis> rpush lists "c" "d" "b" "a" "e"
(integer) 5
// 根据字母值大小进行排序,返回从 0 开始,限定 3 个元素
redis> sort lists alpha limit 0 3
"a" "b" "c"
get 选项
可以根据排序后的元素,以及 get 指定的模式,查找并返回某些键的值
redis> mset full-name-jack "Jack Switch" full-name-ivy "Ivy Chick" full-name-tom "Tom Cat"
OK
// 获取全名
redis> sort students alpha get full-name-*
1) "Ivy Chick"
2) "Jack Switch"
3) "Tom Cat"
Notice:
- get 选项可以有多个
- get 选项的位置不同,将得到不同的结果
store 选项
// 将排序后的结果保存到指定的键里面,在必要的时候重用,以提高效率
redis> sort students alpha store sorted_students
(integer) 3