Redis有序集合中每个元素都会关联一个double类型的分数。Redis通过分数来为集合中的成员进行从小到大的排序。
有序集合中的成员是唯一的,但分数(score)可以重复。
zadd name 2 kangzadd name 1 lizadd name 3 wangzadd name 1 zhaozrange name 0 -1# 返回值:# 1) "li"# 2) "zhao"# 3) "kang"# 4) "wang"
zadd name 2 kang
zadd name 1 li
zadd name 3 wang
zadd name 1 zhao
zrange name 0 -1
# 返回值:
# 1) "li"
# 2) "zhao"
# 3) "kang"
# 4) "wang"
Redis中SORT命令可以对列表类型、集合类型以及有序集合类型键进行排序,并返回显示排序的结果,但是不会对原有数据进行修改。
SORT
在对有序集合烈性排序时回忽略元素的分数,只针对元素自身的值进行排序。
offset
count
# 对集合进行排序操作sadd temperature 0 18 16 -1 5 -6sort temperature# 正序排序返回值:# 1) "-6"# 2) "-1"# 3) "0"# 4) "5"# 5) "16"# 6) "18"sort temperature desc# 倒序排序返回值:# 1) "18"# 2) "16"# 3) "5"# 4) "0"# 5) "-1"# 6) "-6"# 对列表进行排序lpush age 23 18 16 22 26 28 42lrange age 0 -1# 返回值:# 1) "42"# 2) "28"# 3) "26"# 4) "22"# 5) "16"# 6) "18"# 7) "23"sort age# 正序排序返回值:# 1) "16"# 2) "18"# 3) "22"# 4) "23"# 5) "26"# 6) "28"# 7) "42"sort age desc# 倒序排序返回值:# 1) "42"# 2) "28"# 3) "26"# 4) "23"# 5) "22"# 6) "18"# 7) "16"# 对有序集合进行排序zadd score 1 20 2 40 3 10 4 88zrange scroe 0 -1# 返回值:# 1) "20"# 2) "40"# 3) "10"# 4) "88"sort score# 正序排序返回值:# 1) "10"# 2) "20"# 3) "40"# 4) "88"sort score desc# 倒序排序返回值:# 1) "88"# 2) "40"# 3) "20"# 4) "10"
# 对集合进行排序操作
sadd temperature 0 18 16 -1 5 -6
sort temperature
# 正序排序返回值:
# 1) "-6"
# 2) "-1"
# 3) "0"
# 4) "5"
# 5) "16"
# 6) "18"
sort temperature desc
# 倒序排序返回值:
# 1) "18"
# 2) "16"
# 3) "5"
# 4) "0"
# 5) "-1"
# 6) "-6"
# 对列表进行排序
lpush age 23 18 16 22 26 28 42
lrange age 0 -1
# 1) "42"
# 2) "28"
# 3) "26"
# 4) "22"
# 7) "23"
sort age
# 1) "16"
# 2) "18"
# 3) "22"
# 4) "23"
# 5) "26"
# 6) "28"
# 7) "42"
sort age desc
# 5) "22"
# 7) "16"
# 对有序集合进行排序
zadd score 1 20 2 40 3 10 4 88
zrange scroe 0 -1
# 1) "20"
# 2) "40"
# 3) "10"
# 4) "88"
sort score
# 1) "10"
# 2) "20"
# 3) "40"
sort score desc
# 1) "88"
# 3) "20"
# 4) "10"
lpush name zhao qian sun lisort name# 返回值:# (error) ERR One or more scores can't be converted into doublesort name alpha# 正序排序返回值# 1) "li"# 2) "qian"# 3) "sun"# 4) "zhao"sort name alpha desc# 倒序排序返回值:# 1) "zhao"# 2) "sun"# 3) "qian"# 4) "li"
lpush name zhao qian sun li
sort name
# (error) ERR One or more scores can't be converted into double
sort name alpha
# 正序排序返回值
# 2) "qian"
# 3) "sun"
# 4) "zhao"
sort name alpha desc
# 1) "zhao"
# 2) "sun"
# 3) "qian"
# 4) "li"
lpush age 18 20 22 16 14 23sort age limit 2 -1# 返回值:# 1) "18"# 2) "20"# 3) "22"# 4) "23"
lpush age 18 20 22 16 14 23
sort age limit 2 -1
BY参数的语法为BY 参考键,其中参考键可以是字符串类型键或散列类型键的某个字段。
BY
BY 参考键
如果使用了BY属性,SORT命令将根据对应参考键的值进行排序。
当键名为常量时,SORT命令将不会执行排序操作。
lpush stuno 001 002 003mset name_001 kang age_001 18mset name_002 zhao age_001 23mset name_003 liu age_001 16sort stuno by age_*# 返回值:# 1) "002"# 2) "003"# 3) "001"lpush stuno 001 002 003MSET name kang age 18sort stuno by age# 返回值:# 1) "003"# 2) "002"# 3) "001"
lpush stuno 001 002 003
mset name_001 kang age_001 18
mset name_002 zhao age_001 23
mset name_003 liu age_001 16
sort stuno by age_*
# 1) "002"
# 2) "003"
# 3) "001"
MSET name kang age 18
sort stuno by age
# 1) "003"
# 2) "002"
当参考键名中不包含“*”时(即键名为常量),SORT命令将不执行排序操作。
STORE参数可以保存SORT排序结果,保存后的键的类型为列表类型,如果键已经存在,则会覆盖。
STORE
lpush age 18 23 16 24sort age store resultlrange result 0 -1# 返回值:# 1) "16"# 2) "18"# 3) "23"# 4) "24"
lpush age 18 23 16 24
sort age store result
lrange result 0 -1
# 3) "23"
# 4) "24"
LIMIT
原文链接:http://www.cnblogs.com/kangyz/p/15741445.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728