redis之持久化RDB与AOF
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的更多相关文章
- redis的持久化RDB与AOF
redis 持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB ...
- Redis(五)--- Redis的持久化RDB与AOF
一.Redis数据库 我们都知道Redis是基于内存的数据库,数据是以key-value键值对的方式存储的,那么key-value键值对是随意放在内存中的么,其实Redis的服务会创建很多的数据库空间 ...
- Redis的持久化——RDB和AOF
推荐阅读 Redis 持久化之RDB和AOF --来自ITDragon龙 Redis Persistence --来自Redis官网文档
- redis的持久化 rdb和aof
1.rdb(Redis DataBase) 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化 ...
- Redis之持久化(RDB AOF)
Redis 提供了 RDB 和 AOF 两种持久化方案: RDB:生成指定时间间隔内的 Redis 内存中数据快照,是一个二进制文件 dumpr.rdb AOF:记录 Redis 除了查询以外的所有写 ...
- 配置方案:Redis持久化RDB和AOF
Redis持久化方案 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘.当下次Redis重启时,利 ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- redis的持久化(RDB&AOF的区别)
RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...
- Linux - redis持久化RDB与AOF
目录 Linux - redis持久化RDB与AOF RDB持久化 redis持久化之AOF redis不重启,切换RDB备份到AOF备份 确保redis版本在2.2以上 实验环境准备 备份这个rdb ...
随机推荐
- Bitbucket入门手册
老大要我去调研一下有什么好用的免费软件版本管理工具,有利于小团队开发的.我第一个想到的就是git,经常在git下东西,听说它的代码仓库好用,于是就注册了一个github的账号,创建仓库的时候才发现只能 ...
- 数据库中间件之mycat安装部署(一)
在学习数据库中间件前,我们先抛出三个问题 1.数据库数据量不大,但并发读写操作很大,应该怎么办? 此时我们首先考虑使用缓存中间件来减轻读压力,如果不能满足则考虑数据库读写分离,此时就会引入新的问题,这 ...
- (六)lucene之其他查询方式(组合查询,制定数字范围、指定字符串开头)
本章使用的是lucene5.3.0 指定数字范围查询 package com.shyroke.test; import java.io.IOException; import java.nio.fil ...
- C# 在运行中拖拽,改变控件大小位置类(转载)
原文地址:https://blog.csdn.net/zgke/article/details/3718989 copy的code /// <summary> /// 移动改变控件大小 / ...
- sqlyog无操作一段时间后重新操作会卡死问题
在使用 sqlyog 的过程中,遇到了这种情况:打开一个连接,进行了一些操作之后,过一段时间没有操作,然后再来操作会卡死一段时间,等一段时间后操作完成了继续进行其它操作,又很流畅了.但是过一段时间不操 ...
- oracle学习笔记:update一整列 关联更新
普通的 update 都是根据条件来对部分列的内容进行修改,用法如下: update temp_cwh_table set name = 'xxx' where id = 1; 假设现在有2张表:A. ...
- 4.Hbase Shell 命令
Hbase提供了一个shell的终端给用户交互:#$HBASE_HOME/bin/hbase shell,执行quit命令可以退出命令行 2.使用Hbase Shelll 命令操作: 名称 命令表达式 ...
- Octave(1)
size(A)返回矩阵A的大小: >> A=[ ; ; ]; >> size(A) %返回矩阵A 的大小 ans = >> size(A,) %返回A的第一维度大小 ...
- AtCoder Beginner Contest 133 F Colorful Tree
Colorful Tree 思路: 如果强制在线的化可以用树链剖分. 但这道题不强制在线,那么就可以将询问进行差分,最后dfs时再计算每个答案的修改值, 只要维护两个数组就可以了,分别表示根节点到当前 ...
- SmtpClient 发送邮件
利用SmtpClient 代码发送邮件. 简单测试代码: static void Main(string[] args) { MailMessage msg = new MailMessage(); ...