【Redis】 对象
【Redis】 对象Metadatatitle: 【Redis】 对象
date: 2023-07-09 08:35
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 对象
概述Redis 没有直接使用前文的数据结构来实现键值对数据库,而是基于这些数据结构构建了一个对象系统,通过对象组织数据结构,包括字符串对象,列表对象,哈希对象,集合对象和有序集合对象这 5 种对象。
使用对象的一个好处是可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场景下的使用效率。
Redis 使用对象来表示数据库的键和值。每个对象都是一个 redisObject 结构,是一个按照位段存储的结构,节约内存:
typedef struct redisObject{
//类型
unsign ...
【Redis】 压缩列表
【Redis】 压缩列表Metadatatitle: 【Redis】 压缩列表
date: 2023-07-09 08:34
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 压缩列表
概述压缩列表是列表键和哈希键底层实现之一。当一个列表键只包含少量列表项,且每个列表项要么是小整数,要么是长度比较短的字符串,Redis 就使用压缩列表来做列表键的底层实现。
list
entry
压缩列表是一种为节约内存而开发的顺序型数据结构。
压缩列表被用作列表键和哈希键的底层实现之一。
压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数值。
添加新节点到压缩列表,或者从压缩列表中删除节点,可能会引发连锁更新操作,但这种操作出现的几率并不高。
压缩列表的构成为节约内存而开发的,由一系列特殊编码的连续 ...
【Redis】 整数集合
【Redis】 整数集合Metadatatitle: 【Redis】 整数集合
date: 2023-07-09 08:33
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 整数集合
概述当一个集合只包含整数元素,并且元素不多时,Redis 就会使用整数集合作为集合键的底层实现。
整数集合是集合键的底层实现之一。
整数集合的底层实现为数组,这个数组以有序、无重复的方式保存集合元素,在有需要时,程序会根据新添加元素的类型,改变这个数组的类型。
升级操作为整数集合带来了操作上的灵活性,并且尽可能地节约了内存。
整数集合只支持升级操作,不支持降级操作。
整数集合的实现整数集合是 Redis 中用于保存整数值的集合抽象数据结构,可以保证集合有序不重复。每个intset.h/intset结构来表示一个整数 ...
【Redis】 跳跃表
【Redis】 跳跃表Metadatatitle: 【Redis】 跳跃表
date: 2023-07-09 08:32
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 跳跃表
概述跳跃表是一种有序的数据结构,通过在每个节点维持多个指向其他节点的指针,达到快速访问节点的目的。
如果一个有序集合中包含的元素数量比较多,又或者有序集合中元素的成员是较长的字符串,Redis 就会使用跳跃表来作为有序集合键的底层实现。Redis 只有在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中作为内部数据结构。
跳跃表是有序集合的底层实现之一。
Redis的跳跃表实现由zskiplist和zskiplistNode两个结构组成,其中zskiplist用于保存跳跃表信息(比如表头节点、表尾节点、长度) ...
【Redis】 字典
【Redis】 字典Metadatatitle: 【Redis】 字典
date: 2023-07-09 08:31
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 字典
概述字典又称符号表,关联数组或映射,用于保存键值对的抽象数据结构。当一个哈希键包含的键值对比较多时,或者键值对中的元素都是比较长的字符串时,Redis 就会使用字典作为哈希键的底层实现。
字典被广泛用于实现Redis的各种功能,其中包括数据库和哈希键。
Redis中的字典使用哈希表作为底层实现,每个字典带有两个哈希表,一个平时使用,另一个仅在进行rehash时使用。
当字典被用作数据库的底层实现,或者哈希键的底层实现时,Redis使用MurmurHash2算法来计算键的哈希值。
哈希表使用链地址法来解决键冲突,被分配到同一个索引 ...
【Redis】 链表
【Redis】 链表Metadatatitle: 【Redis】 链表
date: 2023-07-09 08:30
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 链表
概述当一个列表键包含了数量比较多的元素,或者列表中包含的元素都是比较长的字符串时,Redis 就会使用链表作为列表键的底层实现。
链表被广泛用于实现Redis的各种功能,比如列表键、发布与订阅、慢查询、监视器等。
每个链表节点由一个listNode结构来表示,每个节点都有一个指向前置节点和后置节点的指针,所以Redis的链表实现是双端链表。
每个链表使用一个list结构来表示,这个结构带有表头节点指针、表尾节点指针,以及链表长度等信息。
因为链表表头节点的前置节点和表尾节点的后置节点都指向NULL,所以Redis的链表实现是无环 ...
【Redis】 简单动态字符串
【Redis】 简单动态字符串Metadatatitle: 【Redis】 简单动态字符串
date: 2023-07-09 08:28
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 简单动态字符串
概述Redis 中,涉及可以被修改的字符串值时,都用简单动态字符串(simple dynamic string,SDS)来实现。比如包含字符串值的键值对在底层的实现。C 字符串(C 语言中传统字符串,以空字符串结尾的字符数组)则用于无须对字符串进行修改的地方,比如日志打印。
SDS 还被用作缓冲区,比如 AOF 模块中的 AOF 缓冲区,客户端状态中的输入缓冲区。
Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态字符串)作 ...
【Redis】 多机库的实现
【Redis】 多机库的实现Metadatatitle: 【Redis】 多机库的实现
date: 2023-07-09 07:59
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 多机库的实现
概述
复制(同步,命令传播,SYNC,PSYNC 实现,心跳检测)
Sentinel 机制(启动并初始化,获取主从信息,发送 / 接收频道消息,下线检测,故障转移)
cluster 集群(节点数据结构,槽指派,命令执行,重新分片,ASK 错误,故障转移,消息)
复制undefined
undefined
Sentinel 机制undefined
undefined
cluster 集群undefined
undefined
【Redis】 单机库的实现
【Redis】 单机库的实现Metadatatitle: 【Redis】 单机库的实现
date: 2023-07-08 23:28
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 单机库的实现
概述
数据库(数据库实现,键空间实现,过期键操作,删除策略,通知)
RDB 持久化(载入与创建,间隔性保存原理,文件结构)
AOF 持久化(实现,载入与数据还原,AOF 重写)
事件(文件事件,I/O 多路复用的实现,时间事件,serverCron 函数,调度与执行)
客户端(属性,创建与关闭)
服务器(初始化过程,命令执行过程)
数据库undefined
undefined
RDB 持久化undefined
undefined
AOF 持久化undefined
undefined
事件undefined ...
【Redis】 Redis 数据结构与对象
【Redis】 Redis 数据结构与对象Metadatatitle: 【Redis】 Redis 数据结构与对象
date: 2023-07-08 20:57
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 Redis 数据结构与对象
概述
简单动态字符串undefined
undefined
链表undefined
undefined
字典undefined
undefined
跳跃表undefined
undefined
整数集合undefined
undefined
压缩列表undefined
undefined
对象undefined
undefined