Redis 篇

devtools/2025/3/6 23:10:02/

一、数据结构

二、持久化方式

Redis 提供了两种主要的持久化方式,分别是 RDB(Redis Database)和 AOF(Append Only File),此外,还可以同时使用这两种方式以增强数据安全性,以下为你详细介绍:

RDB(Redis Database)

原理

RDB 持久化是将 Redis 在某个时间点上的内存数据快照保存到磁盘上的一个二进制文件(.rdb 文件)。Redis 可以通过手动触发或者根据配置的规则自动触发 RDB 快照的生成。在 Redis 重启时,会读取这个 RDB 文件,将数据恢复到内存中。

触发方式
  • 手动触发
    • SAVE 命令:会阻塞 Redis 服务器进程,直到 RDB 文件创建完毕,在此期间,服务器不能处理任何客户端请求。
    • BGSAVE 命令:会派生出一个子进程来创建 RDB 文件,主进程可以继续处理客户端请求。子进程创建 RDB 文件完成后会向主进程发送信号。
  • 自动触发
    可以在 redis.conf 配置文件中设置自动触发的规则,例如:
save 900 1
save 300 10
save 60 10000

上述配置表示:在 900 秒内如果有 1 个 key 发生变化,或者 300 秒内有 10 个 key 发生变化,又或者 60 秒内有 10000 个 key 发生变化,就会自动触发 BGSAVE 操作。

优点
  • 文件紧凑:RDB 文件是经过压缩的二进制文件,占用磁盘空间较小,便于备份和传输。
  • 恢复速度快:加载 RDB 文件恢复数据时,只需将文件内容加载到内存,相比 AOF 方式恢复速度更快。
  • 性能影响小:使用 BGSAVE 时,主进程可以继续处理客户端请求,对 Redis 性能影响较小。
缺点
  • 数据丢失风险:由于是按一定时间间隔进行快照,两次快照之间若 Redis 发生故障,可能会丢失这段时间内的数据。
  • 生成快照时的性能开销:fork 子进程会消耗系统资源,对于大型数据集,可能导致短暂性能下降。

AOF(Append Only File)

原理

AOF 持久化是将 Redis 执行的每一条写命令追加到 AOF 文件的末尾。当 Redis 重启时,会重新执行 AOF 文件中的所有命令来恢复数据。

配置方式

在 redis.conf 中通过 appendonly 参数开启 AOF 持久化:

appendonly yes

同时,可以通过 appendfsync 参数配置 AOF 文件的同步策略:

  • always:每次写操作都同步到磁盘,数据安全性最高,但会影响性能。
  • everysec:每秒同步一次,是一种兼顾性能和数据安全性的策略。
  • no:由操作系统决定何时同步,性能最好,但数据安全性最低。
优点
  • 数据安全性高:可以最大程度保证数据完整性,即使 Redis 发生故障,最多丢失最近一次同步的数据。
  • 可读性强:AOF 文件是文本文件,记录的是 Redis 执行的写命令,便于查看和分析。
缺点
  • 文件体积大:随着写操作增加,AOF 文件会不断增大,占用较多磁盘空间。
  • 恢复速度慢:重启时需要重新执行 AOF 文件中的所有命令,恢复时间可能较长。
  • 性能影响always 同步策略会对 Redis 性能产生一定影响。

混合持久化(RDB + AOF)

从 Redis 4.0 开始支持混合持久化方式。将 RDB 的文件格式和 AOF 的持久化策略结合起来。在 AOF 重写时,将内存中的数据以 RDB 的形式写入 AOF 文件的开头,之后的写操作再以 AOF 的方式追加到文件末尾。这样既保证了数据恢复速度(利用 RDB 部分),又提高了数据安全性(利用 AOF 部分记录后续操作)。

在 redis.conf 中通过以下配置开启混合持久化:

aof-use-rdb-preamble yes

三、常用指令

  1. 全表查询:keys

  2. 分页查询:

  3. 游标查询:

四、优化方式


http://www.ppmy.cn/devtools/165093.html

相关文章

java环境部署

java环境部署 一、准备工作 jrejdkeclipse jdk下载:21和1.8-----官网:Oracle:Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装:IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…

FastGPT 引申:常见 Rerank 实现方案

文章目录 FastGPT引申:常见 Rerank 实现方案1. 使用 BGE Reranker2. 使用 Cohere Rerank API3. 使用 Cross-Encoder 实现4. 自定义 Reranker 实现5. FastAPI 服务实现6. 实现方案总结 FastGPT引申:常见 Rerank 实现方案 下边介绍几种 Rerank 的具体实现…

【商城实战(8)】筑牢权限防线:用户认证与权限管理进阶

【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配&#xf…

Win10 用户、组与内置安全主体概念详解

一、‌用户(User)‌ ‌定义‌ 用户是操作系统中的身份标识,用于区分不同操作者并控制资源访问权限。每个用户拥有独立的安全标识符(SID)‌。 ‌分类‌ ‌内置用户‌: ‌Administrator‌:系统…

Kubernetes(K8S)部署 Redis Cluster 集群

以下将详细介绍如何使用 Kubernetes(K8S)部署 Redis Cluster 集群,并给出相应的 YAML 代码。 1. 准备工作 在开始部署之前,需要确保已经安装并配置好 Kubernetes 集群,并且 kubectl 可以正常与集群通信。 2. 部署 R…

【Mac】git使用再学习

目录 前言 如何使用github建立自己的代码库 第一步:建立本地git与远程github的联系 生成密钥 将密钥加入github 第二步:创建github仓库并clone到本地 第三步:上传文件 常见的git命令 git commit git branch git merge/git rebase …

【AI神经网络与人脑神经系统的关联及借鉴分析】

AI神经网络与人脑神经系统的关联及借鉴分析 一、结构与功能模拟:从生物神经元到人工单元 生物神经元模型 人脑神经元通过电化学信号传递信息,当输入信号超过阈值时触发动作电位("全有或全无"法则)。其动态过程可用Hodg…

1688平台API接口实战:Python实现店铺全量商品数据抓取

在电商数据驱动决策的时代,1688作为国内最大的B2B批发平台,其开放的API接口为商家提供了高效获取商品数据的通道。本文将以Python语言为例,详解如何通过官方接口实现店铺所有商品的自动化抓取。(综合参考) 一、接口核…