Redis深入之路(十四)

排序

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

你可能感兴趣的:(redis,redis)