redis有序集合类型sort set

redis的数据类型之-有序集合

sort set和set类型一样,也是string类型元素的集合,也没有重复的元素,不同的是sort set每个元素都会关联一个,通过权值可以有序的获取集合中的元素

sort set的操作:

sort set类型适合场景:

   获得排名最前的5个热门帖子信息(通过帖子回复量标识热门帖子),用sql的做法:select  *  from message order by backnum desc limit 5;但是当数据量足够大时,比如有1亿条数据,这一条sql下去就会耗费大量数据库资源,查询速度也很慢,即使在backnum(回复量)上建立索引,也是很耗费数据库资源的。如果用redis的sort set,就可以很高效地实现这一功能,就像上一个帖子里的set集合类似,可以用set sort只保存回复量最多的前五条。

假设有如下的帖子信息:      

用sort set 保存帖子:切换到redis的运行目录,后台带着配置文件启动redis服务,并启动redis的操作终端:

 

执行命令select 1切换到第二个数据库(其他的数据类型的例子都在这个数据库里)

1,zadd key score member命令:创建sort set排序集合,添加5条数据,hotmessage表示热门帖子

2,zrevrange key start end 权值按从大到小排序,返回的是member列表,zrange key start end是权值从小到大排序。

 

增加第六条帖子回复,然后再按权值从大到小排序,删除权值最小的帖子回复,sort set  hotmessage中保持回复量最高的5条帖子

3,zremrangebyrank key min max:删除集合中排名在指定区间的元素, 范围0 0就表示第一个元素 ,

可以看到回复量最小的id为14的帖子被删除,id为16的帖子被添加进来,这样集合里一直保存着回复量最高的5个帖子。

 4,zcard key :返回集合中元素的个数

5,zscore key member:返回元素15对应的权值

6,zincrby key incr member:给元素为15的权值加100

7,zrem key  member:删除指定的元素

原文地址:https://www.cnblogs.com/lihaoyang/p/6053492.html