首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis03-Redis数据结构Redis字典数据结构

前言 周末被社会皮鞭狠狠抽打了几下。人微言轻,为生计奔波,劳碌一生。个人牢骚。今天接着来学习Redis第三篇,字典数据结构。...字典数据结构其实完全可以类比Java中HashMap数据结构,两者都是哈希表。 字典 简介说明 字典,又称为符号表 ,关联数组或映射。...是一种用于保存键值对(key-value pair)抽象数据结构。字典中每个键都是唯一,通过键来更新值,或者根据键来删除整个键值对等等。...字典在Redis应用相当广泛,比如Redis数据库就是使用字典作为底层实现。对数据库增、删、查、改操作也是构建在对字典操作之上。...总结 本文简单介绍了Redis字典数据结构, 它是通过哈希表节点来存储键值信息,通过链表法来处理键冲突。

60530
您找到你想要的搜索结果了吗?
是的
没有找到

Redis02-Redis数据结构Redis链表

前言 上一篇文章我们学习了Redis数据结构之简单动态字符串,这一篇我们接着来学习Redis中另外一个数据结构-链表。...链表有很多种,首先,本文会首先回顾一下一些常见链表,接着就是介绍Redis链表结构。...循环链表优势在于链尾到链头,链头到链尾比较方便。适合处理具有环形结构数据。 ? 在这里插入图片描述 Redis链表 Redis链表使用是双端无环链表。...双端无环链表在Redis使用 链表在Redis应用非常广泛,列表对象底层实现之一就是链表,此外如发布订阅、慢查询、监视器等功能也用到了链表,我们现在简单想一想为什么使用双端无环链表,而不是数组...总结 本文首先对链表相关知识点做了一个回顾,简单介绍了单链表,双端链表,循环链表。接着就是着重介绍了Redis链表结构,Redis链表采用是双端无环链表。通过list结构来操作链表。

41530

RedisRedis五种数据结构

换句话来说, 在 Redis 中, 只有能表示为 long 类型值, 才会以整数形式保存, 其他类型整数、小数和字符串, 都是用 sdshdr 结构来保存。...列表 集合 ---- REDIS_SET (集合)是 SADD 、 SRANDMEMBER 等命令操作对象, 它使用 REDIS_ENCODING_INTSET 和 REDIS_ENCODING_HT...否则,集合初始编码为 REDIS_ENCODING_HT 。...集合编码切换 如果一个集合使用 REDIS_ENCODING_INTSET 编码, 那么当以下任何一个条件被满足时, 这个集合会被转换成 REDIS_ENCODING_HT 编码: intset 保存整数值个数超过...有序集合编码转换 对于一个 REDIS_ENCODING_ZIPLIST 编码有序集, 只要满足以下任一条件, 就将它转换为 REDIS_ENCODING_SKIPLIST 编码: ziplist

47630

Redis数据结构-集合

Redis集合特性Redis集合是一个无序、不重复字符串元素集合,它特性如下:无序性:集合中元素没有特定顺序,元素存储顺序不重要。唯一性:集合中元素是唯一,相同元素不会出现多次。...高效插入和删除操作:Redis集合支持高效插入和删除操作,使得它在处理成员关系、去重等场景下非常有用。...支持集合运算:Redis提供了丰富集合运算命令,包括并集、交集、差集等,可以方便地对集合进行组合和操作。高效成员判断:Redis集合可以快速判断一个元素是否属于集合,时间复杂度为O(1)。...Redis集合操作示例下面是一些常见Redis集合操作示例,展示了集合灵活性和实用性。添加元素SADD key member1 member2 ...该命令用于向集合中添加一个或多个元素。...获取所有元素SMEMBERS key该命令用于获取集合中所有元素。计算并集SUNION key1 key2 ...该命令用于计算多个集合并集。

19300

redis支持数据结构

空字符串也是一个有效key。rediskey使用时,有一些建议: key最好不要太长。...中没有对应key存在集合中push元素或者删除一个空集合,redis需要主动去创建空集合或者是删除没有值key。...A比B要排在前面,那么 A>B 它内部实现是 dual-ported数据结构 ,内部同时包含了 skip list和 hash table,每次添加元素时间是O(lgN),但是获取时间是常量...,-1表示最后一个,同时返回对应元素分数 zrevrange hackers 0 -1 //按照逆序 复制代码 Bitmaps 它并非一种数据结构,而是在string类型上定义一种面向bit操作。...,包括 AND OR XOR NOT bitcount:计算bit值是1个数 bitpos:找到第一个指定值(指定0或者1)位置 HyperLogLogs 它是一种概率数据结构,用来统计唯一值。

56020

Redis 数据结构总结

实际上,这跟两方面有关,一方面,Redis是一个内存数据库,几乎所有的操作都在内存上完成,内存访问速度相对于磁盘来说当然是非常快;另一方面,得益于Redis数据结构Redis为了更加快速高效完成增删改查操作...,设计了一套适合于自己数据结构,本文就Redis数据结构进行简单分析。...一、数据类型与数据结构 常用Redis同学可能会立刻说出,Redis有五种常用数据类型:String(字符串)、List(列表)、Hash(哈希表)、Set(集合)、SortedSet(有序集合)。...)、ZipList(压缩列表)等,他们对应关系如下图所示: 可以看出,除了String只使用简单动态字符串实现,其他四种数据类型都是使用底层数据结构实现,这是因为面对不同情况,Redis在实现一个数据类型时会使用不同底层数据结构来优化存储...四、哈希表 哈希表是Redis字典底层数据结构: sizemask属性值总是等于size-1,这个属性和哈希值做&运算,决定一个键应该被放到table数组哪个索引上。

1.6K10

Redis数据结构-哈希

Redis哈希特性Redis哈希是一个键值对集合,其中每个键都对应一个哈希表。哈希表实际上是一个包含字段和值无序散列表。...下面是Redis哈希一些重要特性:灵活存储结构:哈希表中字段和值都是字符串类型,这使得哈希数据结构非常适用于存储和操作复杂数据结构,如对象和映射等。...高效存储和检索:Redis以内存为存储介质,哈希表使用散列函数将键映射到内存中位置,因此可以实现高速数据存储和检索。对哈希表访问时间复杂度为O(1)。...支持嵌套结构:Redis哈希可以包含其他哈希表作为值,从而实现嵌套结构。这使得开发者可以以层次化方式组织和存储数据。...支持原子操作:Redis提供了原子操作来处理哈希表,确保在多个并发操作中保持数据一致性。Redis哈希操作示例下面是一些常见Redis哈希操作示例,展示了哈希灵活性和实用性。

27700

Redis数据结构-列表

Redis列表特性Redis列表是一个有序字符串元素集合,它特性如下:有序性:列表中元素按照插入顺序进行存储,并且每个元素都有一个索引值来表示其在列表中位置。...动态长度:Redis列表长度是可以动态增长和缩小,它可以包含最多 2^32 - 1 个元素。支持重复元素:列表中元素可以重复,同一个值可以出现多次。...高效插入和删除操作:Redis列表支持在列表两端进行插入和删除操作,这使得它在实现队列、栈和消息队列等数据结构时非常有用。...支持索引访问:通过索引可以快速访问列表中元素,从而实现快速随机访问和修改。Redis列表操作示例下面是一些常见Redis列表操作示例,展示了列表灵活性和实用性。...删除指定数量元素LREM key count value该命令用于从列表中删除指定数量元素。count值可以为正数、负数或0,表示删除相应数量匹配元素。

23800

Redis 数据结构

String 常用命令: set, get, decr, incr, mget String 数据结构是简单 key-value 类型,value 不仅可以是 String,也可以是数字。...也是 Redis 最重要数据结构之一,比如微博关注列表,粉丝列表,消息列表等功能都可以用 Redis list 结构来实现。...Redis list 实现为一个双向链表,即可以支持反向查找和遍历,方便操作,虽然会带来部分额外内存开销。...另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒一个功能,基于 redis 实现简单高性能分页,可以做类似微博那种下拉不断分页东西(一页一页往下走...Redis 可以非常方便实现如共同关注、共同粉丝、共同喜好等功能。

43330

Redis:07---Redis数据结构

一、五大数据结构 Redis可以存储键与5种不同数据结构类型之间映射,这5种数据结构类型分别为: STRING:字符串 LIST:列表 SET:集合 HASH:散列 ZSET:有序集合 ?...二、内部编码 实际上每种数据结构都有自己底层内部编码实现,而且是多种实现, 这样Redis会在合适场景选择合适内部编码,如下图所示 ?...关于这些数据结构详细介绍可以参阅后续文章 Redis这样设计有两个好处: 第一,可以改进内部编码,而对外数据结构和命令没有影响,这样一旦开发出更优秀内部编码,无需改动外部数 据结构和命令,例如Redis3.2...,例如ziplist比较节省内存,但是在列表元素比较多情况下,性能会有 所下降,这时候Redis会根据配置选项将列表类型内部实现转换为 linkedlist OBJECT ENCODING命令 该命令用来返回数据结构内部编码...三、再说五种结构 这里我不会讲太深入,深入内容会在后续章节,每个数据结构作为一个专题来具体讲。 1.String 字符串类型 是redis中最基本数据类型,一个key对应一个value。

53620

Redis详解(四)------ redis底层数据结构

上一篇博客我们介绍了 redis五大数据类型详细用法,但是在 Redis 中,这几种数据类型底层是由什么数据结构构造呢?本篇博客我们就来详细介绍Redis中五大数据类型底层实现。...这里我们就不做过多演示了,那么上次出现 embstr 以及 int 还有 quicklist 是什么数据结构呢?下面我们就来介绍Redis中几种主要数据结构。...3、链表   链表是一种常用数据结构,C 语言内部是没有内置这种数据结构实现,所以Redis自己构建了链表实现。关于链表详细介绍可以参考我这篇博客。   ...压缩列表是Redis为节省内存而开发顺序型数据结构,通常作为列表键和哈希键底层实现之一。   ...以上介绍简单字符串、链表、字典、跳跃表、整数集合、压缩列表等数据结构就是Redis底层一些数据结构,用来实现上一篇博客介绍Redis五大数据类型,那么每种数据类型是由哪些数据结构实现呢?

71500

Redis03-Redis数据结构之跳表

前言 上一篇文章我们介绍了字典这个数据结构,这一篇文章我们接着来学习下另外一个数据结构,跳表。那么什么是跳表呢?...跳表基本概念 跳表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点指针,从而达到快速访问队尾目的。 这么说是不是感觉有点云里雾里呢?那么我们详细解释下这个概念。...在这里插入图片描述 Redis跳表实现 Redis使用跳表作为有序集合底层实现之一,如果一个有序集合包含元素数量比较多,又或者有序集合中元素成员是比较长字符串时,Redis就会使用跳表来作为有序集合键底层实现...总结 本文介绍了跳跃表这种稍陌生数据结构,跳表是基于单链表加索引方式实现,它是以空间换时间方式来提升查找速度。...参考 Redis数据结构-跳跃表 跳跃表 《Redis设计与实现》 带你读《Redis 5设计与源码分析》之三:跳 跃 表 17 -跳表:为什么Redis一定要用跳表来实现有序集合?

32320

Redis数据结构-有序集合

Redis有序集合特性Redis有序集合是一个有序、不重复字符串元素集合,它特性如下:有序性:有序集合中每个元素都关联一个分数,用于排序元素。元素根据分数进行有序排列。...唯一性:有序集合中元素是唯一,相同元素不会出现多次。高效插入和删除操作:Redis有序集合支持高效插入和删除操作,使得它在排行榜、计数器等场景下非常有用。...Redis有序集合操作示例下面是一些常见Redis有序集合操作示例,展示了有序集合灵活性和实用性。...获取指定范围元素ZRANGE key start end [WITHSCORES]该命令用于按照分数从小到大顺序获取有序集合中指定范围元素。可以选择是否同时返回元素分数。...可以选择是否同时返回元素分数,以及指定返回结果偏移量和数量。获取元素排名ZRANK key member该命令用于获取有序集合中指定元素排名,排名从0开始。

23400
领券