码迷,mamicode.com
首页 > 编程语言 > 详细

redis排序

时间:2019-03-18 21:08:32      阅读:222      评论:0      收藏:0      [点我收藏+]

标签: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"

 

redis排序

标签:color   push   个学生   成绩   nbsp   序列   排序   des   sort命令   

原文地址:https://www.cnblogs.com/wsfu/p/10554903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!