1.简介

  在 set 的基础上给集合中每个元素关联了一个分数,往有序集合中插入数据时会自动根据这个分数排序。它保留了元素不能重复的特性,并且元素是有序的。

2.基本操作

zadd key score member  //score是可以重复的,添加key的时候指定分数
zcard key //计算成员个数
zscore key member //计算某个成员的分数
zrank key member //计算成员排名,从低到高
zrevrank key member //计算成员排名,从高到低
zrem key member [member...]  //删除成员
zincrby key increnment member //增加成员的分数
zrange key start end [withscores]  //从低到高返回指定排名的分数
zrevrange key start end [withscores]  //从高到低返回zrangebyscore key min max [withscores] [limit offset count] //按照分数从低到高返回
zrevrange score  key min max [withscores] [limit offset count] //按照分数从高到低返回成员withscore 代表返回的时候带上成员的分数...还有求交集,并集等操作

3.应用场景

  在集合类型的场景上加入排序就是有序集合的应用场景了。

(1)根据好友的“亲密度”排序显示好友列表。

// 用元素的分数(score)表示与好友的亲密度
zadd user:kobe 80 james 90 wade  85 melo  90 paul// 根据“亲密度”给好友排序
zrevrange user:kobe 0 -1/*** 输出:*      1) "wade"*      2) "paul"*      3) "melo"*      4) "james"*/// 增加好友的亲密度
zincrby user:kobe 15 james// 再次根据“亲密度”给好友排序
zrevrange user:kobe 0 -1/*** 输出:*      1) "james"*      2) "wade"*      3) "paul"*      2) "melo"*///类似的需求还出现在根据文章的阅读量或点赞量对文章列表排序

(2)排行榜

实效性

从排行榜的实效性上划分,主要分为:

  • 实时榜:基于当前一段时间内数据的实时更新,进行排行。例如:当前一小时内游戏热度实时榜,当前一小时内明星送花实时榜等

  • 历史榜:基于历史一段周期内的数据,进行排行。例如:日榜(今天看昨天的),周榜(上一周的),月榜(上个月的),年榜(上一年的)

业务数据类型

从需要排行的数据类型上划分,主要分为:

  • 单类型数据排行榜:是指需要排行的主体不需要区分类型,例如,所有用户积分排行,所有公贡献值排行,所有游戏热度排行等

  • 多类型(复合类型)数据排行榜:是指需要排行的主体在排行中要求有类型上的区分,例如:竞技类游戏热度排行、体育类游戏热度排行、MOBA类游戏操作性排行、角色/回合/卡牌三类游戏热度排行等

展示唯度

从榜单的最终展示唯度上划分,主要分为:

  • 单唯度:是指选择展示的排行榜就是基于一个唯度下的排行,例如前面提到的MOBA类游戏操作性排行榜,就仅展示所有MOBA类游戏按操作性的评分排行

  • 多唯度:是指选择展示的排行榜还有多种唯度供用户选择,仍然以前面的MOBA类游戏为例,唯度除了操作性,还有音效评分排行,难易度评分排行,画面评分排行等。

展示数据量

从需要展示的数据量上划分,主要分为:

  • topN数据:只要求展示topN条排行纪录,例如:最火MOBA游戏top20

  • 全量数据:要求展示所有数据的排行,例如:所有用户的积分排行

sorted set 数据类型的应用场景相关推荐

  1. Redis 数据类型及应用场景

    一. redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string. hash. set. sorted set.bitmap.hyperloglog 提供了 AOF 和 R ...

  2. Redis的数据类型以及每种数据类型的使用场景

    人就是很奇怪的动物,很简单的问题往往大家都容易忽略,当我们在使用分布式缓存Redis的时候,一个最简单的问题往往被人忽略,Redis的数据类型以及每种数据类型的使用场景是什么? 是不是觉得这个问题很基 ...

  3. Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透

    Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透 简单介绍一个redis? redis是内存中的数据结构存储系统,一个key-value类型的非关系型数据库,可持久化的数据库 ...

  4. Redis五种数据类型及应用场景

    Redis五种数据类型及应用场景 MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...

  5. Redis八种数据类型及应用场景介绍

    本文来说下Redis八种数据类型及应用场景介绍 文章目录 概述 String 介绍 应用场景 Hash 介绍 应用场景 List 介绍 应用场景 Set 介绍 应用场景 ZSet 介绍 应用场景 Bi ...

  6. Redis各个数据类型的使用场景

    Redis各个数据类型的使用场景 Redis支持五种数据类型: string(字符串) hash(哈希) list(列表) set(集合) zset(sorted set:有序集合). Redis列表 ...

  7. Redis五大数据类型(字符串对象(string)、列表对象(list)、哈希对象(hash)、无序集合(set)和Sorted Set数据类型(zset有序集合))

    Redis五大数据类型 一.String(字符串)数据类型 1.SET/GET/APPEND/STRLEN 2.INCR/DECR/INCRBY/DECRBY 3.GETSET 4. SETEX 5. ...

  8. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景

    作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...

  9. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

    本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...

最新文章

  1. 保护眼睛设置.txt
  2. 如何利用OpenCV自带的级联分类器训练程序训练分类器
  3. 《推荐系统实践》样章:如何利用用户标签数据
  4. Github 王炸功能!Copilot 替代打工人编程?
  5. 10分钟了解分布式CAP、BASE理论
  6. python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据
  7. Net Core 2.1Filter里面获取Controller、Action,请求方法,请求头部,请求参数
  8. wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
  9. HDU 6321(状压dp)
  10. java获取取得Timestamp类型的当前系统时间
  11. 【原创】nbsp;Window7nbsp;vs201…
  12. mysql nlssort_Oracle中文排序 NLSSORT
  13. c语言课程设计家谱管理系统,数据结构-家谱管理系统
  14. 或许你一辈子都是个小人物
  15. java工厂模式:简单工厂、工厂方法、抽象工厂(通俗易懂)
  16. T1: String根据特定字符截取字符串
  17. MindSpore实现语音指令识别(迁移tf入门教程)
  18. 任志强:和马云是好朋友 房子没添砖但还会涨
  19. Altium Designer-打开丝印层、位号,不显示器件位号问题
  20. GEE学习笔记:在GEE中下载Sentinel-2影像

热门文章

  1. Android面试收集录 2D绘图与动画技术
  2. C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析...
  3. MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
  4. (011)XHTML文档之列表
  5. HTML5+CSS3实现的小风车-转动的童年
  6. 【Spring MVC学习】spring mvc入门示例
  7. 【Spring学习】spring注解自动注入bean
  8. 前端面试每日 3+1 —— 第32天
  9. Bootstrap3基础 input-group-btn 按钮与输入框 横向组合
  10. 网络编程7_ multiprocessing类-管道.数据共享, 信号量,事件,进程池