Redis管理之持久化

Redis的一大重要特征就是支持持久化。

Redis提供了两种不同的持久化方式:RDB和AOF。 RDB持久化可以在指定的时间间隔内生成数据集的快照。由于是定期的生成数据集的快照,所以,如果服务器出现异常停止的时候,那可能就会造成上一次备份后面的数据没有被保存下来。

AOF持久化以纯文本的方式记录了所有的操作命令。aof支持不同的fsync策略,可以选择每秒fsync,默认是每秒。如果在写的时候出现宕机,也可以通过redis-check-aof工具来修复aof备份文件。

这两种持久化方式也可以同时使用。

持久化配置

RDB方式:在默认情况下,Redis将数据库快照保存在名字为dump.rdb的二进制文件中,也可以通过配置文件配置。

可以通过配置文件来决定RDB保存的条件,也可以通过SAVE或者BGSAVE命令来显示的执行保存操作。

例如:save 60 1000的意思是 60秒内至少有1000个键被改动过的话就自动保存一次数据集。

默认情况下是启用RDB方式持久化的。

save 900 1
save 300 10
save 60 10000

默认情况下,没900秒内有一个key被改动就保存,没300秒内有10个key被改动就保存,每60秒内有1万个key被改动就保存。

dbfilename dump.rdb:指定了保存的文件名。

dir ./:指定了保存的路径为当前目录,更改为/usr/local/redis

AOF方式:aof方式的启动只需要配置一个appendonly yes的选项就可以。

aof支持下面几种持久化策略:

1、每次有新命令就执行一次fsync

2、没秒执行一次fsync(默认)

3、从不fsync。

appendonly no:默认情况下没有开启,修改为yes就是开启。

appendfilename "appendonly.aof":默认的持久化文件名称。

# appendfsync always
appendfsync everysec:默认开启这个,每秒fsync一次。
# appendfsync no

RDB方式测试

[[email protected] 13:14 /usr/local/redis]# ll
总用量 276
-rw-rw-r--.  1 root root 127778 7月  24 22:58 00-RELEASENOTES
-rw-rw-r--.  1 root root     53 7月  24 22:58 BUGS
-rw-rw-r--.  1 root root   1815 7月  24 22:58 CONTRIBUTING
-rw-rw-r--.  1 root root   1487 7月  24 22:58 COPYING
drwxrwxr-x.  6 root root   4096 8月  15 19:35 deps
-rw-rw-r--.  1 root root     11 7月  24 22:58 INSTALL
-rw-rw-r--.  1 root root    151 7月  24 22:58 Makefile
-rw-rw-r--.  1 root root   4223 7月  24 22:58 MANIFESTO
-rw-rw-r--.  1 root root  20530 7月  24 22:58 README.md
-rw-rw-r--.  1 root root  57765 9月   3 11:32 redis.conf
-rwxrwxr-x.  1 root root    271 7月  24 22:58 runtest
-rwxrwxr-x.  1 root root    280 7月  24 22:58 runtest-cluster
-rwxrwxr-x.  1 root root    281 7月  24 22:58 runtest-sentinel
-rw-rw-r--.  1 root root   7606 7月  24 22:58 sentinel.conf
drwxrwxr-x.  3 root root   4096 9月   9 12:55 src
drwxrwxr-x. 10 root root   4096 7月  24 22:58 tests
drwxrwxr-x.  8 root root   4096 7月  24 22:58 utils
[[email protected] 13:14 /usr/local/redis]# redis-cli
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> shutdown save
not connected> exit
[[email protected] 13:18 /usr/local/redis]# ll
总用量 280
-rw-rw-r--.  1 root root 127778 7月  24 22:58 00-RELEASENOTES
-rw-rw-r--.  1 root root     53 7月  24 22:58 BUGS
-rw-rw-r--.  1 root root   1815 7月  24 22:58 CONTRIBUTING
-rw-rw-r--.  1 root root   1487 7月  24 22:58 COPYING
drwxrwxr-x.  6 root root   4096 8月  15 19:35 deps
-rw-r--r--.  1 root root    177 9月   9 13:18 dump.rdb
-rw-rw-r--.  1 root root     11 7月  24 22:58 INSTALL
-rw-rw-r--.  1 root root    151 7月  24 22:58 Makefile
-rw-rw-r--.  1 root root   4223 7月  24 22:58 MANIFESTO
-rw-rw-r--.  1 root root  20530 7月  24 22:58 README.md
-rw-rw-r--.  1 root root  57765 9月   3 11:32 redis.conf
-rwxrwxr-x.  1 root root    271 7月  24 22:58 runtest
-rwxrwxr-x.  1 root root    280 7月  24 22:58 runtest-cluster
-rwxrwxr-x.  1 root root    281 7月  24 22:58 runtest-sentinel
-rw-rw-r--.  1 root root   7606 7月  24 22:58 sentinel.conf
drwxrwxr-x.  3 root root   4096 9月   9 12:55 src
drwxrwxr-x. 10 root root   4096 7月  24 22:58 tests
drwxrwxr-x.  8 root root   4096 7月  24 22:58 utils
[[email protected] 13:18 /usr/local/redis]#

发现,已经有dump.rdb文件了。

我们重新启动服务器查看:

[[email protected] 13:19 /usr/local/redis]# service redis start
Starting Redis server...
3925:C 09 Sep 13:20:03.909 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3925:C 09 Sep 13:20:03.910 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3925, just started
3925:C 09 Sep 13:20:03.910 # Configuration loaded
[[email protected] 13:20 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>

可以看到,此时的keys还是存在的。

但是,如果我们把dump文件移动到别的地方呢?

[[email protected] 13:21 /usr/local/redis]# service redis start
Starting Redis server...
3948:C 09 Sep 13:22:03.371 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
3948:C 09 Sep 13:22:03.371 # Redis version=4.0.1, bits=32, commit=00000000, modified=0, pid=3948, just started
3948:C 09 Sep 13:22:03.371 # Configuration loaded
[[email protected] 13:22 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>

发现,keys又不存在了,如果我们把dump文件在拿回来,又可以继续读取到。这就可以用来实现备份和恢复了。

AOF方式测试

需要注意的是,当rdb方式和aof方式同时开启的时候,服务器重启会优先读取aof的文件。

修改配置文件如下:

appendonly yes

[[email protected] 13:32 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> set name wangwu
OK
127.0.0.1:6379> get name
"wangwu"
127.0.0.1:6379> shutdown
not connected> exit
[[email protected] 13:34 /usr/local/redis]# ll
总用量 284
-rw-rw-r--.  1 root root 127778 7月  24 22:58 00-RELEASENOTES
-rw-r--r--.  1 root root     91 9月   9 13:33 appendonly.aof
-rw-rw-r--.  1 root root     53 7月  24 22:58 BUGS
-rw-rw-r--.  1 root root   1815 7月  24 22:58 CONTRIBUTING
-rw-rw-r--.  1 root root   1487 7月  24 22:58 COPYING
drwxrwxr-x.  6 root root   4096 8月  15 19:35 deps
-rw-r--r--.  1 root root    175 9月   9 13:34 dump.rdb
-rw-rw-r--.  1 root root     11 7月  24 22:58 INSTALL
-rw-rw-r--.  1 root root    151 7月  24 22:58 Makefile
-rw-rw-r--.  1 root root   4223 7月  24 22:58 MANIFESTO
-rw-rw-r--.  1 root root  20530 7月  24 22:58 README.md
-rw-rw-r--.  1 root root  57765 9月   3 11:32 redis.conf
-rwxrwxr-x.  1 root root    271 7月  24 22:58 runtest
-rwxrwxr-x.  1 root root    280 7月  24 22:58 runtest-cluster
-rwxrwxr-x.  1 root root    281 7月  24 22:58 runtest-sentinel
-rw-rw-r--.  1 root root   7606 7月  24 22:58 sentinel.conf
drwxrwxr-x.  3 root root   4096 9月   9 12:55 src
drwxrwxr-x. 10 root root   4096 7月  24 22:58 tests
drwxrwxr-x.  8 root root   4096 7月  24 22:58 utils
[[email protected] 13:34 /usr/local/redis]#

查看appendonly.aof的文件内容:

[[email protected] 13:34 /usr/local/redis]# cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$4
name
$4
lisi
*3
$3
set
$4
name
$6
wangwu
[[email protected] 13:35 /usr/local/redis]#

重新启动服务器查看:

[[email protected] 13:36 /usr/local/redis]# redis-cli
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"wangwu"
127.0.0.1:6379>

这就完成了redis的持久化配置了 。

时间: 2024-08-01 12:23:01

Redis管理之持久化的相关文章

超好用的Redis管理及监控工具,使用后可大大提高你的工作效率!

Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据.做为一名有10年以上JAVA开发经验的程序员,工作中项目也是广泛使用了Redis,工作中也遇到了Redis的数据可视化不便.Redis的数据查看维护困难.Redis状态监控运维不易等问题. 相信大家在工作中也会遇到我说的这些问题,在工作中大家可能都装过一些可视化的工具,客户端工具,状态监控工具.例如Redis Desktop Manager,Redis Live,Redis

Redis管理及监控工具

Redis管理及监控工具 Redis做为现在web应用开发的黄金搭担组合,大量的被应用,广泛用于存储session信息,权限信息,交易作业等热数据.做为一名有10年以上JAVA开发经验的程序员,工作中项目也是广泛使用了Redis,工作中也遇到了Redis的数据可视化不便.Redis的数据查看维护困难.Redis状态监控运维不易等问题. 相信大家在工作中也会遇到我说的这些问题,在工作中大家可能都装过一些可视化的工具,客户端工具,状态监控工具.例如Redis Desktop Manager,Redi

redis的数据持久化

就目前自己的理解redis和memcache的区别就是redis可以数据持久化,支持的数据类型有5种 所以就数据持久化这块可以好好了解一下 我们安装的redis的2.6版本,安装之后默认就已经开启了rdb 数据持久化分rdb和aof 快照:(snapshotting)它将某一时刻的的所以数据写入硬盘 只追加文件:(append-only file) 他会在执行写命令时,将会把写命令复制到磁盘里面 快照(rdb): save 900 1     #900秒时间,至少有一条数据更新,则保存到数据文件

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

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

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

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

Redis管理

redis管理 连接 命令 描述 AUTH password 验证密码是否正确 ECHO message 打印字符串 PING 查看服务是否运行 QUIT 关闭当前连接 SELECT index 切换到指定的数据库 服务器 服务器相关命令 命令 描述 INFO 获取 redis 服务器的统计信息 BGREWRITEAOF 异步执行一个 AOF(AppendOnly File) 文件重写操作 BGSAVE 在后台异步保存当前数据库的数据到磁盘 CLIENT KILL [ip:port] [ID c

Redis的多种持久化方式总结

话题:Redis的多种持久化方式: Redis是个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. 1.RDB方式(Snapshotting默认快照方式): 1.1)配置: save 900 1       #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照. save 300 10      #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照. save 60 10000    #在60秒(1分钟)之后,如

redis的可持久化

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务 器.Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”).

Redis学习手册(持久化)

一.Redis提供了哪些持久化机制: 1). RDB持久化:    该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘.        2). AOF持久化:    该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的.    3). 无持久化:    我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了.    4). 同时应用A