redis高级命令

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值