redis持久化存储

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

1.RDB持久化

  • redis提供了RDB持久化的功能,这个功能可以将redis在内存中的状态数据保存到磁盘

  • 触发机制:

    • 手动执行save命令
    • 或者配置触发条件
  • 配置文件:s21_rdb.conf

    • 配置核心参数:

      • dbfilename s21redis.rdb
      • save 900 1
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379 #定义持久化文件存储位置/data/6379
    dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
    bind 127.0.0.1 #redis绑定地址
    #save 900 1 #
    #save 200 10 #在200秒中内,超过10个修改类的操作
    save 20 2 #
    • 创建文件夹 data/6379
    [root@xujunk s21redis]#mkdir -p /data/6379/
    
    
    • 开启redis-server
    [root@xujunk s21redis]#redis-server s21_rdb.conf
    
    查看启动状态:
    [root@xujunk s21redis]#ps -ef |grep redis
    """
    root 22057 1 0 17:14 ? 00:00:00 redis-server 127.0.0.1:6379 """
    • 启动redis-cli端,并进行操作
    [root@xujunk redis-4.0.10]#redis-cli
    #咱们设置save 为20秒内 操作2次。所以这里最少操作2次
    [root@xujunk redis-4.0.10]#set name haha
    [root@xujunk redis-4.0.10]#set name2 haha
    • 查看存储为位置:
    [root@xujunk s21redis]#ls /data/6379
    redis.log s21redis.rdb
    #此时生成2个文件。
    • 杀死所有redis
    pkill -9 redis
    • 再次进入redis
    [root@xujunk s21redis]#redis-server s21_rdb.conf
    [root@xujunk s21redis]#redis-cli
    127.0.0.1:6379> keys *
    1) "name2"
    2) "name3"
    #此时数据达到持久化存储

2.第二个机制:AOF机制

  • AOF机制,将你的修改类操作命令,追加到日志文件中

    • 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集
  • AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾,追加文件方式。

    • 优点:最大程序保证数据不丢,RDB在没有触发save机制之前就宕机了,那么数据就没了。
    • 缺点:日志记录非常大
  • 追加文件:用在文件末尾追加记录的方式,对Redis写入的数据,依次进行持久化,所以它的持久化是更加安全的。

  • 此外,它还提供一个用appendfsync选项设置fsync的策略,确保写入的数据都落到磁盘中,具体选项包括always,everysec,no等。

  • 修改aof 配置文件添加如下参数 ,核心功能参数是:

    appendonly yes
    appendfsync always 总是修改类的操作
    everysec 每秒做一次持久化
    no 依赖于系统自带的缓存大小机制
  • AOF存储示例

    • 创建配置文件并且编辑配置:

      [root@xujunk s21redis]#touch s21_aof.conf
      [root@xujunk s21redis]#vim s21_aof.conf
      daemonize yes
      port 6379
      dir /data/6379
      appendonly yes
      appendfsync everysec
      logfile /data/6379/redis.log
    • 以自己配置文件 启动redis

      [root@xujunk 6379]#redis-server /opt/s21redis/s21_aof.conf 
      
      [root@xujunk 6379]#ls
      appendonly.aof redis.log
      #此时6379目录生成2个文件。实时存储 #实时监控存储数据文件
      [root@xujunk 6379]#tail -f appendonly.aof #另起一个窗口启动客户端,操作redis
      [root@xujunk s21redis]#redis-cli
      127.0.0.1:6379> set name "www"
      OK #监控客户端实时输出存入结果:
      *2
      $6
      SELECT
      $1
      0
      *3
      $3
      set
      $4
      name
      $3
      www
  • redis 持久化方式有哪些?有什么区别?

    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
    
    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog

3.redis持久化rdb切换aof备份

  • 本文在redis4.0中,通过config set命令,达到不重启redis服务,从RDB持久化切换为AOF

  • 查看redis版本

    [root@xujunk s21redis]#redis-server -v
    Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=f4e8cdb9b08f1cb0
  • rdb模式下的redis持久化,不重启切换为 aof模式

    • 手动操作:

      redis内切换:
      config set appendonly yes
      config set save ""
    • 环境准备:更改s21_rdb.conf配置

      #准备rdb配置文件
      daemonize yes
      port 6379
      logfile /data/6379/redis.log
      dir /data/6379 #定义持久化文件存储位置/data/6379
      #dbfilename s21redis.rdb #rdb持久化文件s21redis.rdb
      bind 127.0.0.1 #redis绑定地址
      #save 900 1 #
      #save 200 10 #在200秒中内,超过10个修改类的操作
      save 20 2
      appendonly yes
      appendfsync always
    • 删除rdb保存文件

      [root@xujunk 6379]#rm -rf dump.rdb
    • 重启redis server端部

      [root@xujunk 6379]#redis-server /opt/s21redis/s21_rdb.conf
    • 启动客户端

      [root@xujunk 6379]#redis-cli
      127.0.0.1:6379> keys *
      1) "name"
      #在没有重启redis-server端实现RDB---->AOF(切换)
    • 详情看博客:https://www.cnblogs.com/pyyu/p/10061526.html

    • 注意想要永久切换为aof,还得修改配置文件方可

Part_three:Redis持久化存储的更多相关文章

  1. Redis持久化存储(AOF与RDB两种模式)

    Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一 ...

  2. Redis持久化存储与复制功能简述

    一.分布式系统基础理论 分布式系统的两个基础理论: 1.CAP理论 如图: Consistency(强一致性):数据一致更新,所有数据变动都是同步的.Availability(可用性):好的响应性能. ...

  3. Redis持久化存储详解(一)

    > 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存.我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的 ...

  4. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  5. Redis持久化存储与主从复制

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

  6. Redis持久化存储(三)

    redis高级特性-发布订阅消息服务功能 Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消 ...

  7. Redis持久化存储——>RDB & AOF

    Redis中两种持久化存储机制RDB和AOF redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB ...

  8. Redis持久化存储(RDB和AOF)

    参考了: https://blog.csdn.net/canot/article/details/52886923  和 https://www.cnblogs.com/zhangchao-letv/ ...

  9. Redis持久化存储(一)

    Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...

随机推荐

  1. 第07组 Beta版本演示

    组长博客:求戳 队名:摇光 成员 学号 姓名 组长 031702203 容慧珺 杨明哲 031702202 高星 杨明哲 031702307 黄森敏 杨明哲 031702308 朱丽辰 杨明哲 031 ...

  2. from bs4 import BeautifulSoup 引入需要安装的文件和步骤

    调用beautifulsoup库时,运行后提示错误: ImportError: No module named bs4 , 意思就是没有找到bs4模块,所以解决方法就是将bs4安装上,具体步骤如下: ...

  3. Devops(三):Docker常用命令

    列出镜像列表(docker images) [root@master docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello ...

  4. js页面 :函数名 is not defined

    最初的写法如下 function GetDateStr(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate() + AddDayCoun ...

  5. Reshaper \ VSCode快捷键

    Reshaper 常用快捷键 Alt + F7:查找引用 Ctrl + N:Go To Everything 定位到任何,非常强大 Ctrl + Shift + N:Go To File 定位到文件 ...

  6. UBI mkfs.ubifs 参数记录

    NAND 硬件结构如下: 脚本如下 sudo mkfs.ubifs -q -r rootfs_iproute -m 4096 -e 248KiB -c 3840 -o ubifs.img -F ech ...

  7. Linux MySQL 5.6.43 安装

    [注意] 1.首先安装在默认目录 /usr/local/mysql,如需更改数据存储目录,进行2.3两步 2.如果需要修改数据目录,将my.nf 中的 datadir=/usr/local/mysql ...

  8. Qt编写气体安全管理系统27-设备调试

    一.前言 设备调试核心就是将整个系统中的所有打印数据统一显示到一个模块上,一般都会将硬件通信的收发数据和对应的解析信号发出来或者qdebug出来,这个在调试阶段非常有用,可以具体追踪问题出在哪,哪个数 ...

  9. 转 mysql 备份导致 waiting for global read lock

    ######转 https://blog.csdn.net/weixin_34038652/article/details/92129498 近业务高峰期间经常会有开发跳起来说应用连接数据库超时了! ...

  10. Python - Django - form 组件校验功能

    app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...