一. 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:查看某个分数范围内的元素个数
请登录之后再进行评论