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

最新文章

  1. Java 8之二小坑:stream parallel 和 lamada
  2. 2.[WP Developer体验Andriod开发]Andriod Studio结合Visual Studio Emulator for Android调试Android App
  3. unity自带寻路Navmesh入门教程(一)
  4. java获取对象属性类型、属性名称、属性值
  5. 颜色之RGBA
  6. 使用curl操作openstack swift
  7. 关于echo `git branch | grep \*`
  8. PHP学习笔记十【数组】
  9. Microsoft Visual C++运行库合集下载(静默安装)
  10. 删除Python UserWarning[已解决]
  11. POJ 3624 Charm Bracelet 简单01背包
  12. Java并发编程Semaphore
  13. Python 练习——计算1-2+3-4...+99
  14. [Swift]LeetCode567. 字符串的排列 | Permutation in String
  15. Linux 目录结构学习与简析 Part1
  16. luaFramework
  17. CSS中常见的长度单位
  18. USACO Section 1.5 Prime Palindromes 解题报告
  19. Shell 文本处理工具
  20. api接口响应类型定义

热门文章

  1. Swift使用CoreLocation,你必须要看这一篇
  2. [转]构建基于WCF Restful Service的服务
  3. D3 data()
  4. Postgresql 9.6 搭建 异步流复制 和 同步流复制 详细教程
  5. 查看JVM
  6. Bootstrap模态框modal的高度和宽度设置
  7. c#设计模式之装饰器模式(Decorator Pattern)
  8. linux学习之用户的切换
  9. 函数IsValid()
  10. Linux的思维导图