redis07-----Redis持久化配置

Redis持久化配置

持久化: 即把数据存储于断电后不会丢失的设备中,通常是硬盘.
常见的持久化方式:

主从:通过从服务器保存和持久化,如mongoDB的replication sets配置。
淘宝是主服务器往内存里面写,从服务器往硬盘里面写。mysql,oracle往磁盘写通过操作生成二进制日志,突然断电可以通过日志恢复数据。
couchDB无论增删改差都作用于文件上,文件本身就涵盖了日志信息。日志和文件结构是一体的。

Redis的持久化有2种方式   1.rdb快照持久化  2.Aof日志

rdb的工作原理:
redis的数据是在内存里面,直接把内存的数据以快照(内存的映像文件)的方式,数据结构都搬过来,直接往内存中搬。
每隔N分钟或N次写操作后, 从内存dump数据形成rdb文件,压缩,放在备份目录

Rdb快照的配置选项conf文件:

//从下向上看
save 900 1      // 900秒内,有1条写入,则产生快照
save 300 1000   // 如果300秒内有1000次写入,则产生快照
save 60 10000  // 如果60秒内有10000次写入,则产生快照
(这3个选项都屏蔽,则rdb禁用,不导出了)

stop-writes-on-bgsave-error  yes  // 后台备份进程出错时,主进程停不停止写入?
rdbcompression  yes    // 导出的rdb文件是否压缩(文件太大了)
Rdbchecksum   yes //  导入rbd恢复时数据时,要不要检验rdb的完整性
Dbfilename  dump.rdb  //导出来的rdb文件名
Dir  ./  //rdb的放置路径

rdb的优势:恢复速度非常快。
rdb的缺陷:在2个保存点之间,断电,将会丢失1-N分钟的数据(数据还在redis的内存中还没有持久化)。
出于对持久化的更精细要求,redis增添了aof方式 append only file(追加文件持久化)
Aof 的配置(aof和rdb可以同时存在)
把执行的每条命令写文本文件中去,每执行一个命令就往文件去写速度就慢下来了,

appendonly no # 是否打开 aof日志功能

appendfsync always      # 每1个命令,都立即同步到aof. 安全,速度慢
appendfsync everysec    # 折衷方案,每秒写1次
appendfsync no         # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快,操作系统也有缓冲4k大小。
appendfilename    ./appendonly.aof    //文件目录

no-appendfsync-on-rewrite  yes:  # 正在导出rdb快照的过程中,要不要停止aof的同步
auto-aof-rewrite-percentage  100   #aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size   64mb   #aof文件,至少超过64M时重写,否则刚开始时候很容易达到100%

注: 在dump rdb过程中,aof如果停止同步,会不会丢失?
答: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作.

注: aof重写是指什么?
aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里,以解决 aof日志过大的问题。
比如重复修改同一个key,修改了100次,则存了100次,恢复的时候也要恢复100次。 aof重写是对同一个key的多次操作只记录最后的结果。

问: 如果rdb文件,和aof文件都存在,优先用谁来恢复数据?
答: aof。Rdb的恢复速度快因为是数据的内存映射,aof要逐条来执行。

问: 2种是否可以同时用?
答: 可以,而且推荐这么做

问: 恢复时rdb和aof哪个恢复的快
答: rdb快,因为其是数据的内存映射,直接载入到内存,而aof是命令,需要逐条执行
redis 服务器端命令
redis 127.0.0.1:6380> time  ,显示服务器时间 , 时间戳(秒), 微秒数
1) "1375270361"
2) "504511"

redis 127.0.0.1:6380> dbsize  // 当前数据库的key的数量
(integer) 2
redis 127.0.0.1:6380> select 2
OK
redis 127.0.0.1:6380[2]> dbsize
(integer) 0
redis 127.0.0.1:6380[2]> 

BGREWRITEAOF 后台进程重写AOF
BGSAVE       后台保存rdb快照
SAVE         保存rdb快照
LASTSAVE     上次保存时间

Slaveof master-Host port  , 把当前实例设为master的slave

Flushall  清空所有库所有键
Flushdb  清空当前库所有键
Showdown [save/nosave]

注: 如果不小心运行了flushall, 立即 shutdown nosave ,关闭服务器
然后 手工编辑aof文件, 去掉文件中的 “flushall ”相关行, 然后开启服务器,就可以导入回原来数据.

如果,flushall之后,系统恰好bgrewriteaof了,那么aof就清空了,数据丢失.

原文地址:https://www.cnblogs.com/yaowen/p/8278847.html

时间: 2024-10-12 03:07:21

redis07-----Redis持久化配置的相关文章

redis持久化配置

一. rdb快照持久化 1. 配置,在redis.conf中配置 save 900 1 # 刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化.save 300 10 # 必须是300秒之后至少10个关键字发生变化.save 60 10000 # 必须是60秒之后至少10000个关键字发生变化. # 注 上面三个选项注释,即屏蔽了 rdb快照持久化存储 stop-writes-on-bgsave-error yes # 后台存储错误停止写.rdbcompressio

Redis持久化配置(rdb,aof)

Redis的持久化有2种方式 1快照 2是日志 Rdb快照的配置选项(内存中的快照写入磁盘速度更快) 配置文件:save 900 1 // 900秒内,有1条写入,则产生快照 save 300 1000 // 如果300秒内有1000次写入,则产生快照save 60 10000 // 如果60秒内有10000次写入,则产生快照(这3个选项都屏蔽,则rdb禁用) stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?rdbcompressio

docker+redis持久化配置

设置redis.conf appendonly.默认是appendonly no.改成appendonly yes.设置AOF模式持久化(记录每次操作,不使用快照的形式) appendfsync.设置成everysec(每秒进行一次相对于always性能更好). dbfilename. 设置保存的文件名称(可选) dir. 设置本地数据存储位置(可选,我配置到/redis/data,便于做与宿主机文件夹的映射) 配置完以后重启redis服务 docker 启动配置 设置端口映射6378:6378

redis——持久化篇

众所周知,redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失. 为了解决这个问题,redis提供了持久化功能——RDB和AOF.通俗的讲就是将内存中的数据写入硬盘中. 一.持久化之全量写入:RDB [[email protected]6381]$ more /usr/local/redis/conf/redis.conf save 900 1 save 300 10 sa

redis 安装配置及持久化详解

一.redis简介 二.redis安装 三.redis配置文件详解 四.redis持久化详解 1.redis 简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询. Redi

解密Redis持久化

本文内容来源于 Redis 作者博文,Redis 作者说,他看到的所有针对 Redis 的讨论中,对 Redis持久化的误解是最大的,于是他写了一篇长文来对 Redis 的持久化进行了系统性的论述.文章非常长,也很值得一看,NoSQLFan 将主要内容简述成本文. 什么是持久化,简单来讲就是将数据放到断电后数据不会丢失的设备中.也就是我们通常理解的硬盘上. 写操作的流程 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程. 客户端向服务端发送写操作(数据在客户端的内存中) 数

Redis持久化以及其原理

一.Redis持久化 Redis之所以强大是因为其将所有数据都直接存储在内存中.可是,为了使Redis在重启后数据仍然不丢失,就需要把数据以某种方式持久化到磁盘中(这是使用它作系统缓存的一大优势).Redis支持两种方式进行持久化,一种是RDB,一种是AOF,可以使用一种方式,也可以混合使用它们两种方式. 二.RDB方式(默认的持久化方式) 2.1 RDBa方式简介 其实是通过snapshot快照的方式进行持久化的,当符合一定条件时,Redis会自动将内存中的所有数据快照存储到磁盘中.进行快照的

Redis主从配置

前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sortedset --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在

Redis持久化实践及灾难恢复模拟

参考资料: Redis Persistence http://redis.io/topics/persistence Google Groups https://groups.google.com/forum/?fromgroups=#!forum/redis-db 一.对Redis持久化的探讨与理解 目前Redis持久化的方式有两种: RDB 和 AOF 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复. Redis是一个内存数据库,无论是RDB还是AOF,都只是其保证数据恢