• 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:删除指定的元素

  • 相关阅读:
    洛谷P1071 潜伏者
    2019BJFU 网站设计(孙俏-web前端开发)实验代码-181002222
    反思——P1307 数字反转
    洛谷P1067 多项式输出
    湖南大学第十五届程序设计竞赛(重现赛)
    2019河北省大学生程序设计竞赛(重现赛)
    2019BJFU C++实验习题(完结)
    配置android source 在ubuntu中编译环境
    Android屏幕保持唤醒状态
    Android richtext
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/6053492.html
Copyright © 2020-2023  润新知