Redis Sort Set排序集合类型

sorted set排序集合和set集合一样也是string类型元素的集合,但set集合类型每个元素就只是一个值,而排序集合不同的是每个元素都会关联一个权,排序集合中的每个元素都是值、权的组合,通过权值可以有序的获取集合中的元素。

sorted set 排序类型:

zadd key score member 添加元素到集合,元素在集合中存在则更新对应score(权)
zcard key 返向集合中元素个数
zscore key element 返回给定元素的值 对应的 权
zrange key start end 类似lrange操作从集合中去指定区间的元素,返回的是有序
zrevrange key start end 类似lrange操作从集合中去指定区间的元素,返回结果是按逆序(大到小)结果
zremrangebyrank key min max 删除集合中排名在指定范围的元素(权值从小到大排序)
zrank key member 返回指定元素在集合中的排名(下标) ,集合中元素是按从小到大排序
zrevrank key member 返回指定元素在集合中的排名(下标),但集合中元素是按从大到小排序
zrem key member 删除指定元素,1表示成功,如果元素不存在返回0
zincrby key incr member 按照incr幅度增加对应 member(值)的(score)权,返回权值

该Sort set类型应用场合:
例:获得热门帖子(访问量)信息: select * from message order by backnum desc limit 5;
(以上需求可以通过简单sql语句实现,但是sql语句比较耗费mysql数据库资源)

  • 利用sort set实现获取最热门的前5帖子信息
帖子ID(值) 访问量/万条(权)
1 203
2 115
3 386
4 560
5 338
6 480

创建一个sort set 排序集合message的key内部有5个元素并按照权值由高到低的顺序获得元素值信息:

127.0.0.1:6379[1]> zadd message 203 1
(integer) 1
127.0.0.1:6379[1]> zadd message 115 2
(integer) 1
127.0.0.1:6379[1]> zadd message 386 3
(integer) 1
127.0.0.1:6379[1]> zadd message 560 4
(integer) 1
127.0.0.1:6379[1]> zadd message 338 5
(integer) 1
127.0.0.1:6379[1]> zrevrange message 0 100
1) "4"
2) "3"
3) "5"
4) "1"
5) "2"
127.0.0.1:6379[1]> 

集合每增加一个新元素,就把权值(访问量)最低的那个元素删除:

127.0.0.1:6379[1]> zrevrange message 0 100
1) "4"
2) "3"
3) "5"
4) "1"
5) "2"
127.0.0.1:6379[1]> zadd message 480 6
(integer) 1
127.0.0.1:6379[1]> zcard message
(integer) 6
127.0.0.1:6379[1]> zremrangebyrank message 0 0
(integer) 1
127.0.0.1:6379[1]> zrevrange message 0 100
1) "4"
2) "6"
3) "3"
4) "5"
5) "1"
127.0.0.1:6379[1]> 

返回给定元素的 对应的 ,指定元素在集合中的下标排名:

转载请注明出处:BestEternity亲笔。

猜你喜欢

转载自blog.csdn.net/BestEternity/article/details/84344497