君玉自牧 君玉自牧
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
首页
  • Linux
  • Nginx
  • MySQL
  • Redis
  • Kafka
  • Docker
  • Jenkins
  • Oneindex
  • Bitwarden
  • Confluence
  • Photogallery
  • 智能手机
  • 上古卷轴
  • 健身记录
  • 站点相关
  • 未完待续
GitHub (opens new window)
  • 技术架构

  • 桌面维护

  • 网络工程

  • 系统运维

    • Linux

    • Apache

    • Nginx

    • MySQL

    • Redis

      • Redis 安装部署 & 项目实践
      • Redis 可数据持久化
        • 1.RDB
          • 流程
          • save
          • bgsave
          • 优点
          • 缺点
        • 2.AOF
          • 流程
          • 优点
          • 缺点
        • 混合
      • Redis 内存优化
      • Redis 安装报错
      • Redis 分布式锁
      • Redis 时间窗口限流
      • Redis 访问慢
      • Redis 的脑裂问题
      • Redis 默认端口漏洞被利用挂马
    • MQ

    • ELK

    • Nacos

    • PostgreSQL

    • MongoDB

  • 环境搭建

  • 容器编排

  • 持续集成

  • 监控告警

  • 项目实践

  • 脚本开发

  • 前端开发

  • 后端开发

  • 效率工具

目录

Redis 可数据持久化

# 1.RDB

RDB(Redis DataBase)是 Redis 中默认的持久化机制,将内存中的数据以快照的方式异步保存到磁盘指定目录的.rdb文件中,可以通过配置文件中save参数来定义快照的周期

# 流程

# save

指令执行完成前不执行其他操作,仅用于迁移、维护等数据备份,生产环境谨慎使用

# bgsave

指令执行时,Redis 会调用 glibc 的函数 fork 出一个子进程,先将数据写到磁盘上的一个临时 .rdb 文件中,写入完成后再将原来的 .rdb 文件替换掉

而 COW 机制(copy-on-write)就是保证上述步骤的前提:当主进程执行读操作的时候是访问共享内存的,而主进程执行写操作的时候,则会拷贝一份数据,执行写操作;以此减少分配和复制时带来的瞬时延迟以及不必要的资源分配

# 优点

  • 只有一个文件 dump.rdb ,按时间点保存数据集,便于备份和恢复
  • 持久化时主进程可以继续处理其他命令,不进行任何 I/O 操作,保证 Redis 的高性能
  • RDB 是一个紧凑压缩的二进制文件,重载效率比 AOF 持久化更高,在数据量大时更明显

# 缺点

  • 可能出现数据丢失,在两次 RDB 持久化的时间间隔中,如果出现宕机,则会丢失这段时间中的数据
  • 由于 RDB 是通过 fork 子进程来协助完成数据持久化,当数据集较大时,可能会导致间歇性暂停服务

# 2.AOF

AOF ,及追加文件(Append Only File),当 Redis 处理每一个写命令都会记录在 AOF 文件中,可以看做是命令日志文件

# 流程

需要设置 AOF 的同步选项,因为对文件进行写入并不会马上将内容同步到磁盘上,而是先存储到缓冲区中,同步选项有三种配置项选择:

#是否开启,默认 no,开启换为 yes
appendonly yes
#同步选项
appendfsync everysec
1
2
3
4
  • always:同步记录,可靠性高,I/O 开销大,影响性能较大
  • everysec:每秒同步一次,性能适中,最多丢失 1 秒的数据
  • no:默认配置,即不使用 AOF 持久化,性能最好,可靠性最差

随着 Redis 的运行,AOF 的日志会越来越长,如果实例宕机重启,重载整个 AOF 将会变得十分耗时;为了解决这个问题,Redis 提供 bgrewriteaof 指令,可以将 AOF 文件进行压缩,也可以选择自动触发,在配置文件中配置

no-appendfsync-on-rewrite yes
auto-aof-rewrite-precentage 100
auto-aof-rewrite-min-zise 64mb
1
2
3

# 优点

实现持久化,数据安全,AOF持久化可以配置 appendfsync 属性为 always,每进行一次命令操作就记录到AOF文件中一次,数据最多丢失一次

通过 append 模式写文件,即使中途服务器宕机,可以通过 Redis-check-aof 工具解决数据一致性问题

AOF 机制的 rewrite 模式。AOF 文件的文件大小触碰到临界点时,rewrite 模式会被运行,重写内存中的所有数据,从而缩小文件体积

# 缺点

  • AOF 文件大,比 RDB 文件大很多
  • 比 RDB 持久化启动效率低,数据集大时较为明显
  • AOF 文件体积可能迅速变大,需要定期执行重写操作来降低文件体积

# 混合

顾名思义,

网页编辑 (opens new window)
最近提交: 2023/03/22, 11:52:35
Redis 安装部署 & 项目实践
Redis 内存优化

← Redis 安装部署 & 项目实践 Redis 内存优化→

Theme by Vdoing | Copyright © 2011-2023 | 君玉自牧
粤ICP备15057965号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式