Redis持久化机制

Redis持久化方式

RDB定时快照方式:RDB将数据库的快照(snapshot)以二进制的方式存储在磁盘中。
AOF基于语句追加文件的方式:以协议文本的方式,将所有对数据库进行过写入的命令(及其参数)记录到AOF文件,以此达到记录数据库状态的目的。
虚拟内存(vm)(被废弃)
Diskstore方式(被废弃)

前两种是基于全部数据都在内存中,即最小数据量下提供磁盘落地功能,而后两种方式是尝试存储数据超过物理内存时,即大数据量的数据存储;实际生产环境用的只有前两种,即Redis目前只能作为小数据量存储(全部数据能够加载在内存中),海量数据存储方面并不是Redis所擅长的领域。

RDB定时快照方式

RDB持久化的触发分为手动触发和自动触发两种。

手动触发
通过redis的save命令和bgsave命令,都可以生成RDB文件。
1.save保存数据到磁盘的方式
Redis Save 命令执行一个同步保存操作,将当前Redis实例的所有数据快照(snapshot)以RDB文件的形式保存到硬盘。
语法:redis 127.0.0.1:6379>SAVE
返回值:保存成功时返回OK
2.BGSAVE保存数据到磁盘的方式
BGSAVE命令执行后立即返回OK,然后Redis fork出一个新子进程,原来的Redis进程继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
客户端也可以通过LASTSAVE命令查看相关信息,判断BGSAVE命令是否执行成功。

save命令整个过程会阻塞服务器,而bgsave只有fork子进程时会阻塞服务器,因此save已基本被废弃。

自动触发
自动触发最常见的情况是在配置文件中通过save m n,指定当m秒内发送n次变化时,会触发bgsave。

AOF基于语言追加方式

AOF方式实际类似mysql的基于语句的binlog方式,即每条会使Redis内存数据发生改变的命令都会追加到一个log文件中,也就是说这个log文件就是Redis的持久化数据。
AOF持久化的触发分为手动触发和自动触发两种。
手动触发
使用bgrewriteaof命令:Redis主进程fork子进程来执行AOF重写,这个子进程创建新的AOF文件来存储重写结果,防止影响旧文件。因为fork采用了写时复制机制,子进程不能访问在其被创建出来之后产生的新数据。

自动触发
和RDB一样,配置在redis.conf文件里:
启动AOF:appendonly yes
关闭AOF:
命令行关闭:config set appendfsync no
配置文件:将appendonly设置为no,默认是appendonly no

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值