众所周知,redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失。

为了解决这个问题,redis提供了持久化功能。通俗的讲就是将内存中的数据写入硬盘中。

Redis 提供了多种不同级别的持久化方式:

1、RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。

2、AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。

3、Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。

4、关闭持久化功能,。让数据只存在内存里面,重启就没了。

Redis的RDB持久化(RDB默认是启动的)

1.Snapshotting:

缺省情况下,Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开redis.conf文件之后,我们搜索save,可以看到下面的配置信息:

save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。

save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。

save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

2. Dump快照的机制:

1). Redis先fork子进程。

2). 子进程将快照数据写入到临时RDB文件中。

3). 当子进程完成数据写入操作后,再用临时文件替换老的文件。

以上就是redis默认持久化是否开启的详细内容,转载自php中文网

点赞(851) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部