• Redis的数据结构之sorted-set


    原文:http://blog.java1234.com/blog/articles/320.html

    存储Sorted-Set

    Sorted-Set和Set的区别

     

    Sorted-Set中的成员在集合中的位置是有序的

     

    存储Sorted-set常用命令

    添加元素

    获得元素

    删除元素

    范围查询

    扩展命令

     

    zadd 添加元素 里面包括评分和值

    127.0.0.1:6379> zadd sort1 5 a 4 b 6 c

    (integer) 3

    我们添加集合sort1 元素是a,b,c 评分分别是5,4,6

    集合里的排序是根据评分从小到大排序的;

     

    zrange是查找元素 -1代表是最后一个

    127.0.0.1:6379> zrange sort1 0 -1

    1) "b"

    2) "a"

    3) "c"

     

    假如我们继续添加元素

    这里分两种情况

    假如次元素集合里面已经有了,则覆盖

    我们继续添加b 此时评分改成7 

    127.0.0.1:6379> zadd sort1 7 b

    (integer) 0

    通过zscore 获取b的评分

    127.0.0.1:6379> zscore sort1 b

    "7"

    发现已经修改了;

    127.0.0.1:6379> zrange sort1 0 -1

    1) "a"

    2) "c"

    3) "b"

    假如添加的元素不在集合里,则添加进去

    127.0.0.1:6379> zadd sort1 9 d

    (integer) 1

    127.0.0.1:6379> zrange sort1 0 -1

    1) "a"

    2) "c"

    3) "b"

    4) "d"

     

    删除元素zrem

    127.0.0.1:6379> zrem sort1 b

    (integer) 1

    127.0.0.1:6379> zrange sort1 0 -1

    1) "a"

    2) "c"

    3) "d"

     

    zcard 查看集合里的元素个数

    127.0.0.1:6379> zcard sort1

    (integer) 3

     

    withscores  把评分也显示出来

    127.0.0.1:6379> zrange sort1 0 -1 withscores 

    1) "a"

    2) "5"

    3) "c"

    4) "6"

    5) "d"

    6) "9"

     

    zrevrange 降序排列

    127.0.0.1:6379> zrevrange sort1 0 -1 withscores

    1) "d"

    2) "9"

    3) "c"

    4) "6"

    5) "a"

    6) "5"

     

    我们再加两个元素

    127.0.0.1:6379> zadd sort1 10 e  5 f

    (integer) 2

     

    zremrangebyrank 根据排名来删除元素  删除3个

    127.0.0.1:6379> zremrangebyrank sort1 0 2

    (integer) 3

    127.0.0.1:6379> zrange sort1 0 -1 withscores

    1) "d"

    2) "9"

    3) "e"

    4) "10"

     

    再添加元素

    127.0.0.1:6379> zadd sort1 11 f 16 g 18 h

    (integer) 3

    127.0.0.1:6379> zrange sort1 0 -1 withscores

     1) "d"

     2) "9"

     3) "e"

     4) "10"

     5) "f"

     6) "11"

     7) "g"

     8) "16"

     9) "h"

    10) "18"

     

    zremrangebyscore 根据具体评分范围来删除元素

    127.0.0.1:6379> zremrangebyscore sort1 10 16

    (integer) 3

    127.0.0.1:6379> zrange sort1 0 -1 withscores

    1) "d"

    2) "9"

    3) "h"

    4) "18"

     

    再添加元素

    127.0.0.1:6379> zadd sort1 20 i 23 j 30 k

    (integer) 3

    127.0.0.1:6379> zrange sort1 0 -1 withscores

     1) "d"

     2) "9"

     3) "h"

     4) "18"

     5) "i"

     6) "20"

     7) "j"

     8) "23"

     9) "k"

    10) "30"

     

    zrangebyscore 根据评分范围来查找元素

    127.0.0.1:6379> zrangebyscore sort1 18 23 withscores 

    1) "h"

    2) "18"

    3) "i"

    4) "20"

    5) "j"

    6) "23"

     

    limit 限定查找起始 类似分页

    127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2

    1) "h"

    2) "18"

    3) "i"

    4) "20"

     

    zincrby 给指定元素加分

    127.0.0.1:6379> zincrby sort1 5 h

    "23"

     

    127.0.0.1:6379> zrange sort1 0 -1 withscores

     1) "d"

     2) "9"

     3) "i"

     4) "20"

     5) "h"

     6) "23"

     7) "j"

     8) "23"

     9) "k"

    10) "30"

     

    zcount 查找指定评分范围的元素个数

    127.0.0.1:6379> zcount sort1 20 23

    (integer) 3

     

    Sorted-Set使用场景

    大型在线游戏积分排行榜

    构建索引数据

     

  • 相关阅读:
    【Prince2科普】衡量绩效的六大要素
    项目组合管理、项目集管理、项目管理和组织级项目管理之间的关系
    javascript中关系运算符的整理
    javascript中数组的基础----length和元素的求和
    回调函数和递归函数的应用
    谷歌浏览器打开时显示的是搜狗
    二级导航栏的立体显示
    利用css写的中英文切换的导航栏菜单
    javascript中的对象浅谈
    javascript中逻辑运算符总结
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8251834.html
Copyright © 2020-2023  润新知