• 中文
    • 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.4k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: