标签:color push 个学生 成绩 nbsp 序列 排序 des sort命令
1、sort
排序最常见的是sort命令,可以对列表或者有序集合排序,最简单的排序方式如下:
127.0.0.1:6379> lpush list 1 (integer) 1 127.0.0.1:6379> lpush list 10 (integer) 2 127.0.0.1:6379> lpush list 5 (integer) 3 127.0.0.1:6379> sort list 1) "1" 2) "5" 3) "10"
该命令常与alpha、desc、limit等搭配使用。
2、BY参数
上述的使用方法比较简单,有时候无法满足人们的需求,以学生成绩为例,人们需要按照成绩,来排序,从而得到一个相应的学号的列表,这样比较复杂的排序使用上述的方法就不好操作了,因此需要用BY参数来操作。
首先准备一个学号的列表,且最终希望这个列表按照学生的成绩排列。
127.0.0.1:6379> lpush list 111 222 333 444 555 666 777 888 999 (integer) 9
给每个学生设置成绩,键名为stuscore:学号
127.0.0.1:6379> set stuscore:111 90 OK 127.0.0.1:6379> set stuscore:222 60 OK 127.0.0.1:6379> set stuscore:333 70 OK 127.0.0.1:6379> set stuscore:444 50 OK 127.0.0.1:6379> set stuscore:555 100 OK 127.0.0.1:6379> set stuscore:666 99 OK 127.0.0.1:6379> set stuscore:777 19 OK 127.0.0.1:6379> set stuscore:888 84 OK 127.0.0.1:6379> set stuscore:999 86
比较容易看出,第一名是学号为555的学生,最后一名是学号为777的学生。
127.0.0.1:6379> sort list by stuscore:* desc 1) "555" 2) "666" 3) "111" 4) "999" 5) "888" 6) "333" 7) "222" 8) "444" 9) "777"
可以看出,BY这个参数的实际作用是:将待排序列表中的每个键值带入到stuscore:*的*中,并对score:*进行排序,从而获得对应的学号列表。
若代入*的键值不存在,则默认为0
127.0.0.1:6379> del stuscore:333 (integer) 1 127.0.0.1:6379> sort list by stuscore:* desc 1) "555" 2) "666" 3) "111" 4) "999" 5) "888" 6) "222" 7) "444" 8) "777" 9) "333"
标签:color push 个学生 成绩 nbsp 序列 排序 des sort命令
原文地址:https://www.cnblogs.com/wsfu/p/10554903.html