Redis(十一)-Redis的常用数据类型之zset类型

简介: Redis有序集合zset与普通集合set非常相似,还没了解过set数据类型的小伙伴可以先了解一波! ,它也是一个没有重复元素的字符串集合。

简介

Redis有序集合zset与普通集合set非常相似,还没了解过set数据类型的小伙伴可以先了解一波! ,它也是一个没有重复元素的字符串集合。

不同之处是有序集合中的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分是可以重复的。

因为元素时有序的,所有你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

常见命令

将一个或多个member 元素及其score值加入到有序集key当中。

zadd <key> <score1> <value1> <score2> <value2> ....

返回有序集key中,下标<start><stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。

zrange <key> <start> <stop> [WITHSCORES]

f3e93878725780a5ed9c123292a2312f_63eaa90f795d456a97a3f8f11534019d.png返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列。

zrangebyscore key minmax [WITHSCORES][limit offset count]

同上,改为从大到小排列

zrevrangebyscore key minmax [WITHSCORES][limit offset count]

be0a78e4137a761c5c43f02ba99a973d_b28e77ce690c4dd18bbde3609bd7da74.png

为元素的score加上增量

zincrby <key> <increment> <value>

删除该集合下,指定值的元素

zrem <key> <value>

统计该集合,分数区间内的元素个数

zcount <key> <min> <max>

返回该值在集合中的排名,从0开始

zrank <key> <value>

0b1a5acaf203280103f507795196a08a_866e4d2c64a54307ba0b9af1493f04fc.png

数据结构

SortedSet (zset)是Redis 提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String,Double> ,可以给每个元素value赋予一个权重score,另一方面它有类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。

zset底层使用了两个数据结构

1.hash,hash的作用就是关联value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。

2.跳跃表,跳跃表的目的在于给元素的value排序,根据score的范围获取元素列表。
跳跃表可以详细查看此文:Redis(十二)-Redis的数据结构之跳表

参考

《Redis的设计与实现》

Redis基本类型及其数据结构

相关文章
|
9月前
|
存储 NoSQL 定位技术
Redis数据类型面试给分情况
Redis常见数据类型包括:string、hash、list、set、zset(有序集合)。此外还包含高级结构如bitmap、hyperloglog、geo。不同场景可选用合适类型,如库存用string,对象存hash,列表用list,去重场景用set,排行用zset,签到用bitmap,统计访问量用hyperloglog,地理位置用geo。
416 5
|
9月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
739 2
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
578 85
|
NoSQL Redis
Redis的常用数据类型有哪些 ?
Redis 有 5 种基础数据结构,它们分别是:string(字符串)、list(列表)、hash(字典)、set(集 合) 和 zset(有序集合)
|
存储 NoSQL Redis
投行系统的毫秒级榜单响应:如何用Redis ZSET破解同分排序难题?
通过Redis的ZSET数据结构和更新时间戳,解决投行交易系统实时排行榜中同分跳变的问题。具体方案为:将交易量作为整数部分,更新时间戳作为小数部分,确保同分时按最新更新排序,实现实时、高效、无需应用层干预的排行榜功能。一句话总结:通过Redis ZSET加更新时间戳,解决百万交易排行榜实时显示及同分难题。
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
291 5
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
357 1
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
235 1
|
存储 NoSQL 关系型数据库
Redis的ZSet底层数据结构,ZSet类型全面解析
Redis的ZSet底层数据结构,ZSet类型全面解析;应用场景、底层结构、常用命令;压缩列表ZipList、跳表SkipList;B+树与跳表对比,MySQL为什么使用B+树;ZSet为什么用跳表,而不是B+树、红黑树、二叉树