【Redis】 重点功能
【Redis】 重点功能Metadatatitle: 【Redis】 重点功能
date: 2023-07-09 13:03
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 重点功能
概述
发布和订阅
事务(事务的实现,WATCH 命令的实现,ACID)
慢查询日志
监视器
发布和订阅undefined
undefined
事务undefined
undefined
Lua 脚本undefined
undefined
排序undefined
undefined
慢查询undefined
undefined
监视器undefined
undefined
【Redis】 cluster 集群
【Redis】 cluster 集群Metadatatitle: 【Redis】 cluster 集群
date: 2023-07-09 08:47
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 cluster 集群
概述集群是 Redis 提供的分布式数据库方案,通过分片来进行数据共享并提供复制和故障转移的功能。主要对集群的节点,槽指派,命令执行,重新分片,转向,故障转移,消息进行介绍。
节点通过握手来将其他节点添加到自己所处的集群当中。
集群中的16384个槽可以分别指派给集群中的各个节点,每个节点都会记录哪些槽指派给了自己,而哪些槽又被指派给了其他节点。
节点在接到一个命令请求时,会先检查这个命令请求要处理的键所在的槽是否由自己负责,如果不是的话,节点将向客户端返回一个MOVED错误,MOV ...
【Redis】 Sentinel 机制
【Redis】 Sentinel 机制Metadatatitle: 【Redis】 Sentinel 机制
date: 2023-07-09 08:46
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 Sentinel 机制
概述Sentinel(哨兵)是 Redis 的高可用性的解决方案,由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器以及属下的所有从服务器。当主服务器下线时,自动将下线的某个主服务器属下的某个从服务器升级为新的主服务器。从而实现故障转移,当原来的主服务器重新上线时,会被降级为从服务器。
下面展示了哨兵监视主从的状态:
Sentinel只是一个运行在特殊模式下的Redis服务器,它使用了和普通模式不同的命令表,所以Sentinel模式能够 ...
【Redis】 复制
【Redis】 复制Metadatatitle: 【Redis】 复制
date: 2023-07-09 08:44
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 复制
概述在 Redis 中,可通过 SLAVEOF 命令或配置文件中设置 slaveof 选项,让一个服务器去复制另一个服务器,被复制的为主服务器,对其复制的称为从服务器。
Redis 2.8以前的复制功能不能高效地处理断线后重复制情况,但Redis 2.8新添加的部分重同步功能可以解决这个问题。
部分重同步通过复制偏移量、复制积压缓冲区、服务器运行ID三个部分来实现。
在复制操作刚开始的时候,从服务器会成为主服务器的客户端,并通过向主服务器发送命令请求来执行复制步骤,而在复制操作的后期,主从服务器会互相成为对方的客户端。
主服务器通 ...
【Redis】 服务器
【Redis】 服务器Metadatatitle: 【Redis】 服务器
date: 2023-07-09 08:42
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 服务器
概述简而言之,这章就是在解释客户端输入 Redis 指令到返回结果的执行过程。
一个命令请求从发送到完成主要包括以下步骤:
客户端将命令请求发送给服务器;
服务器读取命令请求,并分析出命令参数;
命令执行器根据参数查找命令的实现函数,然后执行实现函数并得出命令回复;
服务器将命令回复返回给客户端。
serverCron函数默认每隔100毫秒执行一次,它的工作主要包括
更新服务器状态信息,
处理服务器接收的SIGTERM信号,
管理客户端资源和数据库状态,
检查并执行持久化操作等等。
服务器从启动到能够处理客户端的命令 ...
【Redis】 客户端
【Redis】 客户端Metadatatitle: 【Redis】 客户端
date: 2023-07-09 08:41
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 客户端
概述Redis 服务器的状态结构 clients 属性是链表,记录了所有与服务器相连的客户端结构,对客户端执行批量操作或查找操作,都可以通过 clients 链表完成:
struct redisServer{
//一个链表,保存了所有客户端状态
list *clents
...
};
服务器状态结构使用clients链表连接起多个客户端状态,新添加的客户端状态会被放到链表的末尾。
客户端状态的flags属性使用不同标志来表示客户端的角色,以及客户端当前所处的状态。
输入缓冲区记录了客户端发送的命令 ...
【Redis】 事件
【Redis】 事件Metadatatitle: 【Redis】 事件
date: 2023-07-09 08:40
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 事件
概述Redis 服务器是一个事件驱动程序,主要有两种:
文件事件:Redis 服务器通过套接字与客户端连接,文件事件就是服务器对套接字操作的抽象。服务器与客户端通信会产生相应文件事件,服务器通过监听这些事件来完成一系列网络通信操作。
时间事件:Redis 服务器有一些需要在给定时间内执行的操作,而时间事件就是对这类定时操作的抽象。
简单来说,文件事件就是套接字操作相关的事件;时间事件就是定时操作相关事件。
Redis服务器是一个事件驱动程序,服务器处理的事件分为时间事件和文件事件两类。
文件事件处理器是基于Reactor模 ...
【Redis】 AOF 持久化
【Redis】 AOF 持久化Metadatatitle: 【Redis】 AOF 持久化
date: 2023-07-09 08:39
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 AOF 持久化
概述AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态。服务器启动时,可通过载入和执行 AOF 文件中保存的命令来还原服务器关闭前的数据库状态。
AOF文件通过保存所有修改数据库的写命令请求来记录服务器的数据库状态。
AOF文件中的所有命令都以Redis命令请求协议的格式保存。
命令请求会先保存到AOF缓冲区里面,之后再定期写入并同步到AOF文件。
appendfsy nc选项的不同值对AOF持久化功能的安全性以及Redis服务器的性能有很大的影响。
服务器只要载入并重新执行 ...
【Redis】 RDB 持久化
【Redis】 RDB 持久化Metadatatitle: 【Redis】 RDB 持久化
date: 2023-07-09 08:38
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 RDB 持久化
概述由于 Redis 是内存数据库,数据状态都存储于内存,如果不想办法将存储在内存中的数据库状态保存到磁盘里,那么一旦服务器进程退出,服务器中的数据库状态也会消失。
为解决这个问题,Redis 提供了持久化的功能,可将内存中的数据库保存到磁盘,防止意外丢失。RDS 持久化(默认持久化策略)就是将某一时间点上的状态保存到一个 RDB 文件里。RDB 文件是经过压缩的二进制文件,可通过该文件还原成数据库状态。
RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据。
SAVE命令由服务器 ...
【Redis】 数据库
【Redis】 数据库Metadatatitle: 【Redis】 数据库
date: 2023-07-09 08:37
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: 【Redis】 数据库
概述从 Redis 服务端的实现角度介绍,包括 db 存储,切换,键的存储及过期相关处理。
Redis服务器的所有数据库都保存在redisServer.db数组中,而数据库的数量则由redisServer.dbnum属性保存。
客户端通过修改目标数据库指针,让它指向redisServer.db数组中的不同元素来切换不同的数据库。
数据库主要由dict和expires两个字典构成,其中dict字典负责保存键值对,而expires字典则负责保存键的过期时间。
因为数据库由字典构成,所以对数据库的操作都是建立在字典操作之上的。
...