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

redis高级命令

2014-06-18 15:33 246 查看
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 组合可以。

5 可以为多个key 按照权重排序, 以如下为例
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

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"
最后说明一下,如果mylist中元素比我们要比较的多,可以采用limit 参数来跳过一些数值。


SORT key [BY
pattern] [LIMIT offset count][GET
pattern [GET pattern ...]] [ASC|DESC] [ALPHA][STORE
destination]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: