yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Redis

    • Redis安装
    • redis数据类型
    • python操作Redis
    • 五种数据类型基本操作
    • redis其他常用操作
    • redis发布订阅
    • redis数据持久化
      • redis集群
      • 雪崩穿透击穿
      • redis锁代码
      • redis缓存代码
      • 部署redis主从
      • redis的cluster配置
      • redis哨兵模式
    • Elasticsearch

    • MongoDB

    • 消息队列

    • 数据存储
    • Redis
    YiZhang-You
    2023-05-01
    目录
    _redis数据持久化_
    _RDB持久化_
    _AOF持久化_
    _redis不重启,切换RDB备份到AOF备份_

    redis数据持久化

    # redis数据持久化

    https://www.cnblogs.com/pyyu/p/10009493.html (opens new window)

    Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。

    !就想我本来redis中有很多数据,突然服务器挂了,或者使用pkill等一些杀掉对应的redis进程,在重启的时候数据一个都没有(所有一定要做持久化)

    # RDB持久化

    redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。

    也可以再redis.conf中配置,定期执行。

    RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。

    RDB(持久化)
    内存数据保存到磁盘
    在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
    优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现
    rdb通过再redis中使用save命令触发 rdb
    
    rdb配置参数:
    
    dir /data/6379/  # 日志存放路径
    dbfilename  dbmp.rdb  # 数据存放名称
    
    # 每过900秒 有1个操作就进行持久化
    save  900 1  # 900秒  1个修改类的操作
    save 300 10  # 300秒  10个操作
    save 60  10000  # 60秒  10000个操作
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    redis持久化之RDB实践

    我们在启动redis-server服务端的时候,我们可以写一个自己的配置,redis-server 自定义配置名称 一起启动。这样就可以进行修改

    1、准备配置文件

    my_redis.conf

    daemonize yes
    port 6379
    logfile /data/6379/redis.log  # 日志
    dir /data/6379              #定义持久化文件存储位置
    dbfilename  dbmp.rdb        #rdb持久化文件
    bind 127.0.0.1    #redis绑定地址
    requirepass 123456            #redis登录密码
    save 900 1                    #rdb机制 每900秒 有1个修改记录
    save 300 10                    #每300秒        10个修改记录
    save 60  10000                #每60秒内        10000修改记录
    
    # 1、mkdir -p /data/6379 没有这个文件夹要先创建
    # 2、写配置脚本的时候,不要这些注释
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    2、写好脚本my_redis.conf,启动redis服务端

    redis-server my_redis.conf  # 在脚本目录下
    
    1

    3、启动客户端

    redis-cli -a 123456
    
    1

    4、此时检查目录,/data/6379底下没有dbmp.rdb文件

    还没有数据,所有就只有创建的redis.log
    
    1

    5、通过save触发持久化,将数据写入RDB文件

    127.0.0.1:6379> set age 18
    OK
    127.0.0.1:6379> save
    OK
    
    1
    2
    3
    4

    这个时候,我在干掉redis进程,然后重启发现数据还在。

    注意:rdb缺点,可能会造成数据的丢失但是持久化速度最快

    # AOF持久化

    AOF(append-only log file) 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集 AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。 优点:最大程序保证数据不丢 缺点:日志记录非常大

    redis-client   写入数据  >  redis-server   同步命令   >  AOF文件
    
    1

    配置参数

    AOF持久化配置,两条参数
    
    appendonly   yes
    appendfsync  always    总是修改类的操作
                 everysec   每秒做一次持久化
                 no     依赖于系统自带的缓存大小机制
    
    1
    2
    3
    4
    5
    6

    redis持久化之AOF实践

    1、准备配置文件

    my_redis.conf

    daemonize yes
    port 6379
    logfile /data/6379/redis.log  # 日志
    dir /data/6379              #定义持久化文件存储位置
    dbfilename  dbmp.rdb        #rdb持久化文件
    bind 127.0.0.1    #redis绑定地址
    requirepass 123456            #redis登录密码
    save 900 1                    #rdb机制 每900秒 有1个修改记录
    save 300 10                    #每300秒        10个修改记录
    save 60  10000                #每60秒内        10000修改记录
    
    appendonly yes	# AOF
    appendfsync always
    
    # 1、mkdir -p /data/6379 没有这个文件夹要先创建
    # 2、写配置脚本的时候,不要这些注释
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    2、写好脚本my_redis.conf,启动redis服务端

    redis-server my_redis.conf  # 在脚本目录下
    
    1

    3、启动客户端

    redis-cli -a 123456
    
    1

    4、检查redis数据目录/data/6379/是否产生了aof文件

    [root@web02 6379]# ls
    appendonly.aof  dbmp.rdb  redis.log
    
    1
    2

    5、实时检查aof文件信息

    [root@web02 6379]# tail -f appendonly.aof
    
    1

    6、设置新key,检查aof信息,然后关闭redis,检查数据是否持久化

    redis 持久化方式有哪些?有什么区别?

    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能

    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

    # redis不重启,切换RDB备份到AOF备份

    https://www.cnblogs.com/pyyu/p/10061526.html (opens new window)

    确保redis版本在2.2以上,redis-server -v 查看版本

    我现在是RDB备份,登录redis-cli插入数据,手动持久化

    127.0.0.1:6379> set name chaoge
    OK
    127.0.0.1:6379> save
    OK
    
    1
    2
    3
    4

    检查RDB文件,这个时间就会生成dbmp.rdb文件

    [root@pyyuc /data 22:34:16]#ls 6379/
    dbmp.rdb  redis.log
    
    1
    2

    1、备份这个rdb文件,保证数据的安全

    [root@pyyuc /data/6379 22:35:38]#cp dbmp.rdb dbmp.rdb.bak
    
    1

    2、执行命令,开启AOF持久化

    127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
    OK
    127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
    OK
    
    1
    2
    3
    4

    3、这样我们就可以在文件夹下会出来一个新的AOF的记录文件

    appendonly.aof
    
    1

    此时RDB已经正确切换AOF,注意还得修改my_redis.conf添加AOF设置,不然重启后,通过config set的配置将丢失.

    重启后添加配置脚本添加
    # vim my_nginx.conf
    appendonly   yes
    appendfsync  always
    
    1
    2
    3
    4

    #

    编辑 (opens new window)
    redis发布订阅
    redis集群

    ← redis发布订阅 redis集群→

    最近更新
    01
    配置yun源
    05-24
    02
    linux-配置python虚拟环境
    05-24
    03
    linux文件目录管理
    05-24
    更多文章>
    Theme by Vdoing | Copyright © 2023-2025 yizhang | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式