Redis之--rdb持久化

持久化:通俗讲,下次开机还有数据,断电后不会丢失数据,存放于磁盘。

Redis:rdb快照持久化
每隔N分钟或N次写操作后,从内存dump数据形成RDB文件。压缩,放在备份目录。

参数详解:
从下往上看
save 900 1 #900秒内有1个key的变化,
save 300 10 #300秒内有10个key的变化,
save 60 10000 #60秒内有10000次写入,应该保存
stop-writes-on-bgsave-error yes #后台存储错误停止写
redis server主进程在导出的时候,客户端请求,无法回馈。在新版本的redis中,派生出一个子进程专门导出进程。如果导出过程中发现磁盘不够了,但是进程还在工作。势必会出现数据不一致。这里就有参数出现,如果rdb导出过程中,出错,那么就停止客户端写入。
rdbchecksum yes 重启服务器,从rdb导入内存的时候检测
dbfilename dump rdb #设置rdb文件名
dir #设置工作目录,rdb文件会写入该路径

实验:
1,在/var/下创建dir目录
2,修改redis配置文件,加入上面参数,如dir /var/dir指定rdb存放路径
3,重启进程,删除原来的rdb生成的文件
4,利用自带工具,生成10000个key
./redis-benchmark -n 10000
处理的请求数:
99.76% <= 1 milliseconds
100.00% <= 1 milliseconds
98039.22 requests per second 1秒的请求
5,查看/var/dir下是否有文件产生。
6,登陆redis设置一个键值
127.0.0.1:6379> set site www.zixue.it
OK
7,kill redis进程
[[email protected] dir]# pkill -9 redis
[[email protected] bin]# ./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
8,启动redis进程
[[email protected] redis]# ./bin/redis-server ./redis.conf
9,查看设定的键值还在不
[[email protected] redis]# ./bin/redis-cli
127.0.0.1:6379> get site
"www.zixue.it"

注意:有一定的缺点,因为会有异常掉电的情况。如之前打点保存了一次数据,在后面的某一点又保存了一次数据。这个时候rdb就不行了。后面会继续讲AOF的工作方式。

原文地址:https://blog.51cto.com/yangjunfeng/2410174

时间: 2024-10-29 05:05:05

Redis之--rdb持久化的相关文章

redis之RDB持久化

Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态. 因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见.为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失.

Redis 详解 (六) RDB 持久化

目录 1.RDB 简介 2.触发方式 ①.自动触发 ②.手动触发 3.恢复数据 4.停止 RDB 持久化 5.RDB 的优势和劣势 6.RDB 自动保存的原理  前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储.这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化. 由于 R

mysql主从复制、redis基础、持久化和主从复制

一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 -u 用户 -p 密码验证 -h 连接的主机地址 3.远程链接mysql服务端 mysql -uroot -p -h 192.168.3.115 4.修改mysql密码 # 修改当前用户的密码 set password = PASSWORD('mariadb123

Redis两种持久化方式(RDB&amp;AOF)

爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Redis并发锁 windows下redis基础操作与主从复制 从而 数据备份和读写分离 Redis两种持久化方式(RDB&AOF) Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的作用原理,剩下的就是根据实际情况来制定合适的策略了,再复杂一点,也就

redis学习之——持久化RDB 和AOF

RDB: 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里.rdb 保存的是dump.rdb文件 RDB工作原理: Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件.整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方,式要比AOF方式更加

Redis提供的持久化机制(RDB和AOF)

Redis提供的持久化机制 Redis是一种高性能的数据库,可以选择持久化,也可以选择不持久化. 如果要保存,就会存在数据同步的问题,可以简单认为一份数据放在内存中(快照),一份数据放在磁盘上,Redis提供了很灵活的持久化办法: Redis提供了RDB持久化和AOF持久化,本篇文章中将会对这两种机制进行一些对比 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘. 也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为

redis 源码学习(RDB 持久化)

redis是个内存数据库,所有的操作都是在内存中进行,但是内存有个特点是,程序出问题或者系统出问题.重启,关机都会造成内存数据丢失. 所以需要把内存中的数据dump到硬盘中备份起来. RDB持久化,是内存数据库dump到硬盘的过程,其中RDB是个文件格式,待会介绍. 本文从两个方向剖析, 1)加载dump.rdb文件到内存中. 2)内存数据库dump到硬盘中dump.rdb文件. 加载dump.rdb文件到内存 main函数入口: int main(int argc, char **argv)

[redis读书笔记] 第二部分 单机数据库 RDB持久化

内存中的rdb是会存为文件以做到RDB持久化的.RDB文件时一个二进制文件. 一 载入与存储 文件的载入是在server启动时进行的(rdbload()),因为AOF的更新频率比RDB高,所以如果AOF持久化功能开启,服务器会优先从AOF还原DB,只有AOF关闭,才从RDB还原数据库. 文件的存储由rdbSave()/rdb.c来实现,SAVE/BGSAVE 命令可以触发,前者直接由Redis server处理,此时不能处理其他命令,后者会启动子进程进行处理,此时server可以处理其他命令,但

redis的 rdb 和 aof 持久化的区别 [转]

aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来.save, shutdown, slave 命令会触发这个操作.粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复. aof有如下特性: Code: 把写操作指令,持续的写到一个类似日志文件里.(类似于从postgresql等数