sort命令
用于对列表,集合,有序集合排序。默认asc升序排列。desc降序。
列表排序:
集合排序:
有序集合:
有序集合排序比较的是元素本身而不是分数。
通过alpha对非数字按字典排序
分页显示
limit offset count
表示跳过前面offset个元素并获取之后count个元素。
127.0.0.1:6379> sort lst2 alpha
1) “a”
2) “A”
3) “B”
4) “c”
5) “d”
127.0.0.1:6379> sort lst2 alpha limit 1 3
1) “A”
2) “B”
3) “c”
127.0.0.1:6379>
by
语法:by 参考键
参考键可以是字符串类型键或者散列键的某个字段。
散列类型:
by 键->字段,指定参与排序的字段。
占位符*
by key:*->字段 desc
表示用字段的值替换掉参考键中第一个*并用该值进行排序。星号也可以认为是模糊匹配。key:*
将匹配到key:a,key:1等类似的键,再获取到这些键对应的字段的值进行排序。
字符串类型:
by 参考键:*
字符串存储的不是对象,没有字段,因此不必用->指定字段。同样星号也是模糊匹配。如下图,实际排序值用的是icore:1、icore:2,icore:3的值,而不是ss1列表内的元素。
如果by参数指定元素的值有相同的情况。那么会回过头来比较集合内元素大小,决定排列顺序。
get
指定排序后返回的内容。支持字符串和散列。
示例:
sort classroom:1:students by stu:*->score desc get stu:*->name get stu:*->stuno get #
说明:对班级id为1学生按照考试分数高低进行排序,返回学生的姓名、学号stuno,get # 返回classroom:1:students键对应的值,官方解释为get # 返回元素本身的值,其实就是sort key by …中key的值。
store
保存排序结果,以列表形式缓存。可结合expire来设置结果缓存过期时间。