redis持久化那点儿事

【前言】
相信大家在系统架构的设计中,都会用到缓存数据库。相比于mysql等传统数据库,缓存数据库把数据存储在内存中,在进行数据查询时,不再需要进行磁盘I/O,能够大大提升查询性能。
数据存储在内存里就会带来一个问题,一旦服务器出现异常重启、断电等故障,内存中的数据就会丢失!这对于企业和用户来说都是灾难性的。当然,通常如果对缓存的数据有强依赖,会在底层进行mysql存储,缓存假设在数据库和业务之间,用于提升查询性能。即便如此,如果缓存数据丢失,不能快速恢复重建数据,大量从业务过来的查询直接冲击mysql,查询性能和用户体验都会大打折扣。

所以,在发生故障后,需要快速恢复缓存的数据到内存中,这就需要借助redis持久化机制。
【两种持久化方式】
redis支持两种持久化方式,分别为rdb(redis-database)aof(append only file)

rdb和aof可以说是两种不同级别的持久化方式:

RDB方式是在指定的时间间隔对内存的数据进行快照存储;

AOF方式记录每次对服务器写的操作命令,把这些命令追加到AOF文件里,重启服务器会重新执行记录的命令恢复原始数据。

通过对redis进行配置,可以不使用任何持久化方式,也可以同时开启两种持久化方式。

接下来对两种方式进行详尽说明。

【RDB方式】

Redis 将数据库快照保存在名字为 dump.rdb的二进制文件中。

可以通过命令(save、bgsave)手动进行数据保存操作,也可以通过对redis配置,设置一个触发条件,自动保存数据,比如设置“save 60 1000”,会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次数据集。

【AOF方式】

AOF方式会记录服务器每一次更新操作,把操作命令追加到一个文件里,这个类似于mysql的binlog,但是这个文件不是二进制的,而是可读的文本。

系统出现故障,可以通过复现AOF文件里的命令进行数据恢复。

【总结】


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值