zoukankan      html  css  js  c++  java
  • 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:删除指定的元素

  • 相关阅读:
    架构师维度理解 程序=数据+算法
    vuejs 中 select 动态填充数据,后台的数据
    vuejs 的错误代码,有助于理解
    graphviz 绘制架构图
    graphviz 布局和子图,表格教程
    graphviz layer 教程(非布局)
    待学习
    Linux进程管理
    TCP连接的11种状态,三次握手四次挥手原因
    Linux基本命令使用(三)
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/6053492.html
Copyright © 2011-2022 走看看