您的位置:首页 > 数据库 > Redis

【学习笔记】Redis(5)-排序

2016-07-24 01:00 429 查看
Redis 的 SORT 命令可以对列表、集合或有序集合的值进行排序。

以下代码展示了 SORT 命令对列表键进行排序的例子:

redis > RPUSH numbers 5 2 1 4 3
(integer) 5
redis > LRANGE numbers 0 -1
1) "5"
2) "2"
3) "1"
4) "4"
5) "3"
redis > SORT numbers
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
以下代码展示了 SORT 命令和 BY 选线对有序集合进行排序的例子:
redis > ZADD result 5.0 dog 1.0 pig 3.0 cat
(integer) 3

#为各个元素设置序号
redis > MSET cat_number 1 dog_number 2 pig_number 3
OK

#以序号为权重,对有序集合中的元素进行排序
redis > SORT result BY *_number
1) "cat"
2) "dog"
3) "pig:


SORT 命令包含的可选参数非常多,接下来我们就来了解一下这些参数。

(1)SORT key ALPHA。使用 ALPHA 选项,SORT 命令可以对包含字符串值的键进行排序。
(2)SORT numbers ASC。使用 ASC 选项,SORT 命令可以执行升序排序,使排序结果按照值,从小到大进行排序(默认情况下使用 ASC)。

(3)SORT numbers DESC。使用 DESC 选项,SORT 命令可以执行降序排序,使排序结果按照值,从大到小进行排序。

(4)SORT result BY *_number。使用 BY 选项,SORT 命令可以指定某些字符串键或者某个哈希键所包含的某些属性来作为元素的权重,对一个键进行排序。BY 选项默认权重键保存的值为数字,如果权重键保存的是字符串的话,那么就需要在使用 BY 选项的同时,使用 ALPHA 选项(SORT result BY *_name ALPHA)。

(5)SORT key LIMIT OFFSET COUNT。默认情况下,SORT 命令总是返回排序后的所有元素,通过使用 LIMIT 选项,可以让 SORT 命令只返回其中一部分元素,OFFSET 表示跳过的元素数量,COUNT 表示返回的元素数量,例如:

#result = ["b", "a", "c", "e", "d"]
#跳过前两个元素,返回之后的三个元素
redis > SORT result ALPHA LIMIT 2 2
1) "c"
2) "d"
(6)SORT key GET pattern。使用 GET 选项,可以在排序之后,根据被排序的元素,以及 GET 选项所指定的模式,查找并返回某些键的值。例如:
redis > SET alice-name "Alice White"
redis > SET bob-name "Bob Smith"
redis > SET tom-name "Tom Snow"
redis
4000
> SADD friends "bob" "tom" "alice"
#首先对 friends 集合进行排序,得到:
#1) "alice"
#2) "bob"
#3) "tom"
#然后根据这三个结果来匹配模式,获取并返回 alice-name、bob-name、tom-name 的值
redis > SORT friends ALPHA GET *-name
1) "Alice White"
2) "Bob Smith"
3) "Tom Snow"
(7)SORT key1 STORE key2。默认情况下,SORT 命令只返回排序结果,并不修改原来 key1 中的元素顺序,但是我们可以通过使用 STORE 来将排序结果保存在指定的键里面,在有需要的时候,可以重用这个结果:
#friends = ["bob", "tom", "alice"]
redis > SORT friends ALPHA STORE result
(integer) 3
redis > LRANGE result
1) "alice"
2) "bob"
3) "tom"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: