redis数据持久化

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

RDB持久化

redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。【手动执行时通过save指令触发的】

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

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

rdb配置参数:

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

redis持久化之RDB实践

1.配置启动redis服务端的配置文件

# 创建log日志文件
mkdir -p /data/6380/
cd /data/6380/
touch redis.log
daemonize yes                  # 是否开启后台运行
port 6379 #端口
logfile /data/6379/redis.log # 自定义日志文件
dir /data/6379 #自定义持久化文件存储位置
dbfilename dbmp.rdb #rdb持久化文件
bind 192.168.61.129 #redis绑定地址
requirepass redhat #redis登录密码
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录

2.通过上面的配置文件启动redis服务端

redis-server redis.conf

登录redis客户端

# --raw参数表示支持中文
redis-cli -p 6380 -h 192.168.61.129 --raw

3、登录redis后设置一个key

因为我们要验证他的数据持久化,所以我们登录后需要创建一个key,用save指令触发持久化,然后杀死redis服务端的进程,

192.168.61.129:6380> KEYS *

192.168.61.129:6380> set name "alex"
OK
192.168.61.129:6380> set age 19
OK
192.168.61.129:6380> get name
alex
192.168.61.129:6380> get age
19

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

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

192.168.61.129:6380> KEYS *

192.168.61.129:6380> set name "alex"
OK
192.168.61.129:6380> set age 19
OK
192.168.61.129:6380> get name
alex
192.168.61.129:6380> get age
19
192.168.61.129:6380> SAVE
OK

6、查看持久化文件dbmp.rdb

redis持久化之AOF实践

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

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

配置参数

AOF持久化配置,两条参数

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

1、准备aof配置文件redis.conf

daemonize yes   # 进程是否在后台运行
port 6380 # 端口
logfile /data/6380/redis.log # log日志
dir /data/6380
dbfilename dbmp.rdb # 数据持久化文件
bind 192.168.61.129 # 绑定ip
requirepass root # 设置密码为root
appendonly yes
appendfsync everysec #每秒做一次持久化

2.基于配置文件启动redis服务端

redis-server /etc/redis.conf

3.检查redis数据目录/data/6380/是否产生了aof文件

[root@szx 6380]# ls
appendonly.aof dbmp.rdb redis.log

4.登录redis-cli,写入数据,实时检查aof文件信息

[root@szx ~ 20:09:35]#tail -f /data/6380/appendonly.aof 

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

[root@szx / 19:50:25]#redis-cli -p 6380 -h 192.168.61.129 --raw
192.168.61.129:6380> auth root
OK
192.168.61.129:6380> KEYS * 192.168.61.129:6380> SET name "alex"
OK
192.168.61.129:6380> SET age 87
OK

步骤:

修改配置文件-->启动redis服务端-->登录redis客户端-->创建key

退出客户端杀死redis服务端进程-->重启redis并登录-->查看之前创建的key是否存在

查看数据持久化的文件,所有操作记录都保存在文件中

实时监测数据持久化文件:

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

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

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

redis之持久化RDB与AOF的更多相关文章

  1. redis的持久化RDB与AOF

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

  2. Redis(五)--- Redis的持久化RDB与AOF

    一.Redis数据库 我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间 ...

  3. Redis的持久化——RDB和AOF

    推荐阅读 Redis 持久化之RDB和AOF --来自ITDragon龙 Redis Persistence --来自Redis官网文档

  4. redis的持久化 rdb和aof

    1.rdb(Redis DataBase) 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化 ...

  5. Redis之持久化(RDB AOF)

    Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redis 除了查询以外的所有写 ...

  6. 配置方案:Redis持久化RDB和AOF

    Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...

  7. Redis之数据持久化RDB与AOF

    Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...

  8. redis的持久化(RDB&AOF的区别)

    RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...

  9. Linux - redis持久化RDB与AOF

    目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...

随机推荐

  1. 西门子软件sinutrain-for-sinumerik-operate-v4.8安装报错的处理

       西门子软件sinutrain-for-sinumerik-operate-v4.8安装报错的处理 安装时报错提示: 原因: 可能缺少某些文件 处理: 安装 海康ivms-4200后,可直接安装西 ...

  2. (十六)SpringBoot之使用 Caching- - EhCache

    一.案例 1.1 引入maven依赖 <!-- caching --> <dependency> <groupId>org.springframework.boot ...

  3. Google Drive ubuntu

    Google尚未发布用于从Ubuntu访问其drive的官方Linux客户端.然开源社区却业已开发完毕非官方之软件包‘grive-tools’. grive乃是Google Drive(在线存储服务) ...

  4. VS2019编译 当前最新版chromium

    之前编译过webrtc和chromium, 由于长时间没用,被我删除了, 最近在最新版本的google浏览器上遇到了播放器兼容性问题,老版本的google浏览器是没问题,IE, 火狐浏览器也没问题, ...

  5. vue的自定义指令

    点击元素之外触发函数 <template> <div v-clickoutside="clickItemOut"></div> </tem ...

  6. MySQL数据库的启动与停止

    有时候我们在任务管理器中无意识的结束了数据库的程序,再用可视化工具连接 时就会显示NO CONNECTION的情况,这样就需要重启数据库服务. 1. 我的电脑右键->管理->服务和应用程序 ...

  7. IBM XIV

    参考:https://www.doit.com.cn/p/author/xigua 参考:http://www.doit.com.cn/p/196056.html 图片说明: IBM XIV存储系统采 ...

  8. 【Leetcode】【简单】【283. 移动零】【JavaScript】

    题目描述 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12]输出: [1,3,12,0,0] 说 ...

  9. Java&Selenium智能等待方法封装

    Java&Selenium智能等待方法封装 ExpectedConditions方法还有很多,自然也可以继续扩展很多 package util; import org.openqa.selen ...

  10. Linux 误卸载自带python后的解决办法

    1:卸载python(以免有些同学没有卸载干净) rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps #强制删除已安装程序及其关联 wher ...