sort 命令
1 修饰符 desc 降序排列
2 允许元素按照字段序列排序 alpha ,此时的排序相当于字符串排序, 数字转化为字符 12 排在 2 的前面
3 可以指定避开某些元素,然后开始排序,并返回前n个, 语法为 sort key skip count 。
比如 sort list 3 10 表示大于3 的元素的10个。
4 sort list limit 0 3 alpha desc 组合可以。
set weight_2 300
set weight_3 200
set weight_1 100
rpush mylist 3 2 1
排序命令: sort mylist by weight_* , 就会把mylist的每个元素取出来,替换*,然后排序weight_1 2 3 。
结果为: 1 2 3 。
可以用get 命令取得权重值: sort mylist by weight_* get weight_*
结果为: 100 200 300
还可以将元素与权重值都取出来存入指定目的地dest_list(存储命令为: store, 取得序号本身: get #)
sort mylist by weight_* get # get weight_* store dest_list
lrange dest_list 0 -1
结果为: 1 100 2 200 3 300
6 可以根据hash表中某个field字段的值排序。
hset user1 score 80
hset user2 score 70
hset user3 score 90
sort mylist by user_*->score desc ---> 3 1 2
sort mylist by user_*->score get user_*->score desc ----> 90 80 70
redis 127.0.0.1:6378> hmset user1 score 80 age 10 name wangfeng
OK
redis 127.0.0.1:6378> hmset user2 score 70 age 12 name lixiang
OK
redis 127.0.0.1:6378> hmset user3 score 90 age 11 name liuben
OK
OK
redis 127.0.0.1:6378> hmset user2 score 70 age 12 name lixiang
OK
redis 127.0.0.1:6378> hmset user3 score 90 age 11 name liuben
OK
redis 127.0.0.1:6378> sort mylist by user*->score get # get user*->score get user*->name get user*->age
1) "2"
2) "70"
3) "lixiang"
4) "12"
5) "1"
6) "80"
7) "wangfeng"
8) "10"
9) "3"
10) "90"
11) "liuben"
12) "11"
1) "2"
2) "70"
3) "lixiang"
4) "12"
5) "1"
6) "80"
7) "wangfeng"
8) "10"
9) "3"
10) "90"
11) "liuben"
12) "11"
最后说明一下,如果mylist中元素比我们要比较的多,可以采用limit 参数来跳过一些数值。