(学习交流)三级缓存——nginx+redis+ehcache (一)

目的:解决电商网页,高并发,高可用的需求。

首先从redis的学习开始

redis需要面对的问题——海量数据,大量访问,高并发,高可用,服务器出现问题时数据的备份和恢复。

简而言之就是redis如何进行数据的存,取。

一,redis的持久化

问题:

 

redis突发状况,数据如果没有持久化,那么就会发生大量数据丢失,造成损失,那么持久化就是必需。

 

redis持久化:

分为RDB,AOF,目的都是为了数据恢复。

RDB——对redis中的数据执行周期性的持久化。

AOF——对每条写入指令作为日志,以append-only的模式写入一个日志文件中,在redis重启的时候,通过回放AOF的日志写入数据。

 

RDB的优点:

RDB会生成多个数据文件,每个数据文件都代表某一个时刻中redis的数据,这种多个数据备份的方式,适合冷备份,可以将这些数据文件保存在相对安全的存储中。

RDB对于redis的对外读写服务,影响小,可以保持redis的高性能,因为redis的主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可。

RDB相对于AOF来说,恢复数据是直接加载数据文件,而不像AOF读取日志的写入指令,效率更高,更利于重启和恢复redis进程。

RDB的缺点:

RDB在恢复数据的及时性低于AOF,RDB一般间隔五分钟或者更长时间,形成一个数据文件,那么恢复数据就会丢失这五分钟甚至更长时间的数据,所以RDB不适合作为第一优先的恢复方案。

RDB在fork子进程写数据文件的时候,如果间隔时间较长,产生的文件就会比较大,会影响redis的运行效能,所以一般不建议间隔的时间过长。

AOF的优点:

AOF可以保存数据的及时性,一般AOF间隔一秒,通过一个后台线程执行一次fsync操作,保证os cache中的数据写入磁盘中,最多丢失一秒的数据。

AOF文件以append-only的模式写入,没有磁盘寻址的开销,写入性能高,而且文件不容易破损,即使文件尾部破损,也容易修复。

AOF文件过大,需要重写操作的时候,会对其中的写入指令进行压缩,创建出一份需要恢复数据的最小日志。在创建新日志的时候,老文件的指令照常写入,当新的日志合并写完后,就会替换掉老日志。

AOF已非常可读的方式进行记录(非常可读的方式,没有想明白),如果有人误操作,用flushall命令清空了所有数据,只要后台rewrite没有发生,那么就可以拷贝AOF文件,将flushall指令删除,再将该AOF文件放回,通过恢复机制,恢复数据。

AOF的缺点:

相同数据而言,AOF文件通常比RDB文件要大。

AOF对于redis的QPS(每秒访问量)影响要大于RDB,如果AOF的fsync设置成每写入一条数据就fsync一次,QPS性能降低会更加明显。

AOF基于日志/合并/回放的方式比RDB持久化文件更容易出现bug。

AOF做数据恢复会比RDB要慢,因为是执行写入指令,不适合做冷备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值