sorted set 数据类型的应用场景
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 数据类型的应用场景相关推荐
- Redis 数据类型及应用场景
一. redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string. hash. set. sorted set.bitmap.hyperloglog 提供了 AOF 和 R ...
- Redis的数据类型以及每种数据类型的使用场景
人就是很奇怪的动物,很简单的问题往往大家都容易忽略,当我们在使用分布式缓存Redis的时候,一个最简单的问题往往被人忽略,Redis的数据类型以及每种数据类型的使用场景是什么? 是不是觉得这个问题很基 ...
- Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透
Redis支持的数据类型以及使用场景,持久化,哨兵机制,缓存击穿,缓存穿透 简单介绍一个redis? redis是内存中的数据结构存储系统,一个key-value类型的非关系型数据库,可持久化的数据库 ...
- Redis五种数据类型及应用场景
Redis五种数据类型及应用场景 MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...
- Redis八种数据类型及应用场景介绍
本文来说下Redis八种数据类型及应用场景介绍 文章目录 概述 String 介绍 应用场景 Hash 介绍 应用场景 List 介绍 应用场景 Set 介绍 应用场景 ZSet 介绍 应用场景 Bi ...
- Redis各个数据类型的使用场景
Redis各个数据类型的使用场景 Redis支持五种数据类型: string(字符串) hash(哈希) list(列表) set(集合) zset(sorted set:有序集合). Redis列表 ...
- 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. ...
- 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景
作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...
- Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)
本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...
最新文章
- 保护眼睛设置.txt
- 如何利用OpenCV自带的级联分类器训练程序训练分类器
- 《推荐系统实践》样章:如何利用用户标签数据
- Github 王炸功能!Copilot 替代打工人编程?
- 10分钟了解分布式CAP、BASE理论
- python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据
- Net Core 2.1Filter里面获取Controller、Action,请求方法,请求头部,请求参数
- wsdl2java生成客户端代码_利用wsdl2java工具生成webservice的客户端代码
- HDU 6321(状压dp)
- java获取取得Timestamp类型的当前系统时间
- 【原创】nbsp;Window7nbsp;vs201…
- mysql nlssort_Oracle中文排序 NLSSORT
- c语言课程设计家谱管理系统,数据结构-家谱管理系统
- 或许你一辈子都是个小人物
- java工厂模式:简单工厂、工厂方法、抽象工厂(通俗易懂)
- T1: String根据特定字符截取字符串
- MindSpore实现语音指令识别(迁移tf入门教程)
- 任志强:和马云是好朋友 房子没添砖但还会涨
- Altium Designer-打开丝印层、位号,不显示器件位号问题
- GEE学习笔记:在GEE中下载Sentinel-2影像
热门文章
- Android面试收集录 2D绘图与动画技术
- C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析...
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(2) - 查询
- (011)XHTML文档之列表
- HTML5+CSS3实现的小风车-转动的童年
- 【Spring MVC学习】spring mvc入门示例
- 【Spring学习】spring注解自动注入bean
- 前端面试每日 3+1 —— 第32天
- Bootstrap3基础 input-group-btn 按钮与输入框 横向组合
- 网络编程7_ multiprocessing类-管道.数据共享, 信号量,事件,进程池