<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Redis%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D</id>
	<title>Redis备份与恢复 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Redis%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Redis%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;action=history"/>
	<updated>2026-04-17T09:18:40Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Redis%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=931&amp;oldid=prev</id>
		<title>Evan：​/*  */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Redis%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=931&amp;oldid=prev"/>
		<updated>2019-11-03T13:46:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=redis-dump=&lt;br /&gt;
== redis-dump ins==&lt;br /&gt;
===[[How to Install Ruby2.3 on centos7]]===&lt;br /&gt;
=== ins by gem===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
如果是国内 &lt;br /&gt;
# 移除gem自带源&lt;br /&gt;
gem sources --remove https://rubygems.org/ &lt;br /&gt;
# 添加淘宝源&lt;br /&gt;
gem sources -a https://ruby.taobao.org/ &lt;br /&gt;
&lt;br /&gt;
#ins &lt;br /&gt;
gem install redis-dump -V&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== usage==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#导出&lt;br /&gt;
redis-dump -u :youpassword@127.0.0.1:6379 &amp;gt; redis.json&lt;br /&gt;
&lt;br /&gt;
#导入&lt;br /&gt;
cat redis.json | redis-load -u :youpasswor127.0.0.1:6379&lt;br /&gt;
cat 127.0.0.1.json | redis-load -u :youpasswor@127.0.0.1:6379&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
=redis-shake=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=自带功能=&lt;br /&gt;
&lt;br /&gt;
==备份==&lt;br /&gt;
&lt;br /&gt;
Redis的SAVE命令和BGSAVE命令用于将当前数据库备份&lt;br /&gt;
&lt;br /&gt;
SAVE和BGSAVE命令的区别在于：SAVE命令是阻塞主进程，save操作完成之后，主进程才开始工作，客户端可以连接；BGSAVE命令是fork一个专门save的子进程，此操作不会影响主进程&lt;br /&gt;
注：SAVE只是将当前的数据库备份，备份文件名默认为dump.rdb,可通过配置文件修改备份文件名 dbfilename xxx.rdb（发现一个问题：如果要对多个数据库进行备份，那么最终只能备份最后一个数据库，因为dump.rdb文件会相互覆盖）&lt;br /&gt;
&lt;br /&gt;
==恢复==&lt;br /&gt;
&lt;br /&gt;
将备份的RDB文件，放在指定目录，重启Redis即可恢复数据&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
备份的RDB文件： 通过命令redis 127.0.0.1:6379&amp;gt; CONFIG GET dir查看执行SAVE命令之后，redis默认存放备份文件的目录；通过命令redis 127.0.0.1:6379&amp;gt; CONFIG GET dbfilename查看备份RDB文件的文件名称；&lt;br /&gt;
&lt;br /&gt;
指定目录： 通过命令redis 127.0.0.1:6379&amp;gt; CONFIG GET dir，得出redis从哪个目录读取备份文件（一般只要直接重启Redis就能恢复数据，因为备份的默认目录和启动读取的目录是同一个，但是如果公司有特定的要求，备份文件统一放在其他目录，此时则需要将待还原的RDB文件mv到这个指定目录）&lt;br /&gt;
&lt;br /&gt;
PS：在练习恢复数据时，碰到一个坑：&lt;br /&gt;
1.set一些数据&lt;br /&gt;
2. 执行save命令&lt;br /&gt;
3. del所有的key&lt;br /&gt;
4. 重启，发现数据没有恢复过来&lt;br /&gt;
原因：还记得上文提到过的Redis自动RDB备份吗？我在执行第三步操作时，改变了1个以上的key的值，并且这个时间正好是Redis自动备份900秒的最后一秒，所以此时Redis又自动备份了一次，dump.rdb覆盖了旧的rdb文件，还原回去，自然是del之后的数据了。（当然我这个不是凭空臆想的哈，是因为我在步骤2执行save时，看了一下dump.rdb文件的大小，98K，在准备重启之前，我又看了一下dump.rdb文件，73K，说&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==自动开启RDB持久化==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
修改配置文件&lt;br /&gt;
after 900 sec (15 min) if at least 1 key changed&lt;br /&gt;
900秒（15分钟）内至少1个key值改变（则进行数据库保存--持久化）&lt;br /&gt;
    &lt;br /&gt;
after 300 sec (5 min) if at least 10 keys changed&lt;br /&gt;
300秒（5分钟）内至少10个key值改变（则进行数据库保存--持久化）&lt;br /&gt;
    &lt;br /&gt;
after 60 sec if at least 10000 keys changed&lt;br /&gt;
60秒（1分钟）内至少10000个key值改变（则进行数据库保存--持久化） &lt;br /&gt;
&lt;br /&gt;
save 900 1&lt;br /&gt;
save 300 10&lt;br /&gt;
save 60 10000&lt;br /&gt;
&lt;br /&gt;
备份文件的名称&lt;br /&gt;
dbfilename dump.rdb&lt;br /&gt;
&lt;br /&gt;
备份文件存放路径&lt;br /&gt;
dir ./bak &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=进行AOF备份=&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
开启AOF功能&lt;br /&gt;
&lt;br /&gt;
修改配置文件&lt;br /&gt;
#此选项为aof功能的开关，默认为“no”，通过“yes”来开启aof功能&lt;br /&gt;
appendonly yes  &lt;br /&gt;
&lt;br /&gt;
#指定aof文件名称&lt;br /&gt;
appendfilename appendonly.aof&lt;br /&gt;
&lt;br /&gt;
#备份文件存放路径（此参数同样适用于指定RDB备份文件存放路径）&lt;br /&gt;
dir ./&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
设置保存模式&lt;br /&gt;
&lt;br /&gt;
AOF有3种方式将操作命令存入AOF文件&lt;br /&gt;
1. appendfsync no 不保存&lt;br /&gt;
只执行WHRITE操作，SAVE操作会被略过，只有在Redis被关闭、AOF功能被关闭、系统的写缓存被刷新（如缓存已被写满）这三种情况，SAVE操作会被执行，但是这三种情况都会引起Redis主进程阻塞&lt;br /&gt;
2. appendfsync everysec 每秒钟保存一次&lt;br /&gt;
这种模式中，SAVE原则上每隔一秒钟就会执行一次，具体的执行周期和文件写入、保存时，Redis所处的状态有关，此模式下SAVE操作由后台子线程调用，不会引起服务器主进程的阻塞&lt;br /&gt;
3. appendfsync always 每执行一个命令保存一次&lt;br /&gt;
在这种模式下，每执行一个命令，WRITE和SAVE都会被执行，且SAVE操作会阻塞主进程&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=总结=&lt;br /&gt;
RDB持久化，性能更好（所有操作均由子进程处理，主进程不进行任何IO操作），数据一致性一般。AOF持久化，数据一致性更好，性能一般（记录操作日志，写入日志和执行日志恢复数据的时间都比RDB更长）&lt;br /&gt;
&lt;br /&gt;
=优点及应用场景=&lt;br /&gt;
读写分离 通过复制可以实现读写分离以提高服务器的负载能力。在常见的场景中，读的频率大于写，当单机的Redis无法应付大量的读请求时（尤其是较耗资源的请求，比如SORT命令等）可以通过复制功能建立多个从数据库，主数据库只进行写操作，而从数据库负责读操作。&lt;br /&gt;
&lt;br /&gt;
从数据库持久化 持久化通常相对比较耗时，为了提高性能，可以通过复制功能建立一个（或若干个）从数据库，并在从数据库中启用持久化，同时在主数据库禁用持久化。当从数据库崩溃时重启后主数据库会自动将数据同步过来，所以无需担心数据丢失。而当主数据库崩溃时，需要在从数据库中使用SLAVEOF NO ONE命令将从数据库提升成主数据库继续服务，并在原来的主数据库启动后使用SLAVEOF命令将其设置成新的主数据库的从数据库，即可将数据同步回来。&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/vkingnew/article/details/83016135 redis-dump安装]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/19b5e7b3bffb Redis-Dump安装及使用]&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/hjfeng1988/p/7146009.html 几种redis数据导出导入方式]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/ty_tian/article/details/83277445 redis-dump工具合并redis数据--实践版]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/wangxin3618/article/details/89520095 redis数据迁移的方法]&lt;br /&gt;
&lt;br /&gt;
[https://www.jianshu.com/p/e04a9e80a998 初识Redis（三）：Redis数据备份、恢复与持久化]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/wzzfeitian/article/details/42081969 Redis数据备份与恢复]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.oschina.net/p/redisshake Redis 数据同步工具 RedisShake]&lt;br /&gt;
&lt;br /&gt;
 [[category:redis]]  [[category:ops]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>