• 中文
    • English
  • 注册
  • 查看作者
    • 6-5 09-Redis的数据结构之sorted-set

      一. sorted-set

      1.sorter-set有以下特点:

      • sorter-set和set一样都是字符集合,都不允许出现重复的元素

      • 和set不同的是,sorter-set每个元素都会关联一个double类型的score(分数)。redis正是通过分数来为集合中的成员进行从小到大的排序

      • 虽然sorter-set的元素是唯一的,但是这个score是可以重复的

      • 具有相同分数值的元素按字典序来排列(该属性是有序集提供的,不需要额外的计算)。

      2. sorted-set的应用场景

      • 各类排行榜

      • 微博话题热门等等

      • 构建索引数据

      二. sorted-set命令

      sorted-set常用命令如下:

      • zadd:集合中添加元素,返回值是本次成功插入的元素个数

      jia:0>zadd days 1 zhangjia 2 zhangyi 5 zhangbing
      "3"
      
      jia:0>zadd days 2 zhangjia
      "0"
      
      jia:0>zadd days 3 zhangding
      "1"
      • zscore:获取集合中某个元素的分数

      jia:0>zscore days  zhangjia
      "2"
      • zcard:获取集合中元素个数

      jia:0>zcard days
      "4"
      • zrange:根据范围获取集合元素

      jia:0>zrange days 0 -1
       1)  "zhangjia"
       2)  "zhangyi"
       3)  "zhangding"
       4)  "zhangbing"
      • zrange key min max withscores:显示集合中每个元素的分数,顺序从小到大

      jia:0>zrange days 0 -1 withscores
       1)  "zhangjia"
       2)  "2"
       3)  "zhangyi"
       4)  "2"
       5)  "zhangding"
       6)  "3"
       7)  "zhangbing"
       8)  "5"
      • zrevrange key min max withscores:显示集合中每个元素的分数,顺序从大到小

      jia:0>zrevrange  days 0 -1 withscores
       1)  "zhangbing"
       2)  "5"
       3)  "zhangding"
       4)  "3"
       5)  "zhangyi"
       6)  "2"
       7)  "zhangjia"
       8)  "2"
      • zrangebyscore key min max limit  :根据分数范围、元素个数获取元素

       jia:0>zrangebyscore  days 1 3 limit 1 2
       1)  "zhangyi"
       2)  "zhangding"
      jia:0>zrangebyscore  days 1 3 limit 0 2
       1)  "zhangjia"
       2)  "zhangyi"
      jia:0>zrangebyscore  days 1 3 limit 0 1
       1)  "zhangjia"
      • count:查看某个分数范围内的元素个数

      jia:0>zcount days 1 3
      "3"
      • zrem:删除集合元素

      jia:0>zrem days zhangding zhangbing
      "2"
      
      jia:0>zrange days 0 -1
       1)  "zhangjia"
       2)  "zhangyi"
      • zremrangebyrank:按照排名的范围删除元素(从小到大)

      jia:0>zadd days 1 zhangjia
      "0"
      
      jia:0>zadd days 1 zhangbing
      "1"
      
      jia:0>zadd days 4 zhangding
      "1"
      
      jia:0>zremrangebyrank days 1 2
      "2"
      
      jia:0>zrange days 0 -1
       1)  "zhangbing"
       2)  "zhangding"
      • zremrangebyscore:按照分数的范围删除元素(从小到大)

       jia:0>zadd days 2 zhangjia
      "1"
      
      jia:0>zadd days 3 zhangyi
      "1"
      
      jia:0>zrange days 0 -1 withscores
       1)  "zhangbing"
       2)  "1"
       3)  "zhangjia"
       4)  "2"
       5)  "zhangyi"
       6)  "3"
       7)  "zhangding"
       8)  "4"
       
      jia:0>zremrangebyscore days 1 3
      "3"
      
      jia:0>zrange days 0 -1 withscores
       1)  "zhangding"
       2)  "4"
      • zincrby:对指定元素的分数加n

      jia:0>zincrby days 10 zhangding
      "14"
      
      jia:0>zscore days zhangding
      "14"

      三. 总结

      sorted-set常用命令如下:

      • zadd:集合中添加元素,返回值是本次成功插入的元素个数

      • zscore:获取集合中某个元素的分数

      • zcard:获取集合中元素个数

      • zrange:根据范围获取集合元素

      • zrange xxxxx withscores:显示集合中每个元素的分数,顺序从小到大

      • zrevrange xxxxx withscores:显示集合中每个元素的分数,顺序从大到小

      • zrem:删除集合中某个元素个数

      • zremrangebyrank:按照排名的范围删除元素(从小到大)

      • zremrangebyscore:按照分数的范围删除元素(从小到大)

      • zrangebyscore xxx limit :根据分数范围、元素个数获取元素

      • zincrby:对指定元素的分数加n

      • 在count:查看某个分数范围内的元素个数

      山东·日照
    • 0
    • 0
    • 0
    • 1.2k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: