您的位置:首页 > 数据库 > Redis

redis持久化方式浅析

2017-07-25 15:11 148 查看
以前使用redis做过缓存层系统的开发,当时比较忙,就没有写下这部分的一些记录,通常上讲,redis作为比较流行的内存数据库,它的好处不仅是支持丰富的数据格式存储,他还有另外的优点,比如:具有较为完善的持久化机制。

本篇仅介绍redis的持久化机制,及选择的那种方式的一些建议。

开发人员选择redis作为主要的内存服务器肯定会有一定的考虑,既然选择了,就要了解到使用redis有可能遇到的一些问题。

相对memcache 来说,redis支持数据落地,这对缓存资源的恢复有很好效用。redis支持的持久化方式有两种,一种是rdb(快照形式),另一种是aof形式。

打个比方,rdb形式类似Linux系统的快照,也即系统的还原时间点,众所周知,快照恢复是很快的。

另外一种aof形式有点类似与mysql  innodb类型sql生成的二进制文件,它记录了各种操作,重复性的,或者单一操作的追加,这样带来的后果就是aof文件越来越大,并且宕机时备份数据恢复至内存中时也会相应的浪费一些重复数据的操作,值得一提的是,redis 提供了一个机制,即 aof rewrite, 他的功能简单点说就是,新创建一个aof文件,其中一条记录只有一次,没有原始的累积记录。

rdb 与 aof两者的使用情况是有区别的,如:rdb保存下来的快照可能不是最新的,对于一些数据安全性要求极高的应用基本上是不适用的。而对于aof,虽然记录了完整的数据,但是恢复速度又太慢了(有可能重做了无用功)。

redis作为缓存层,很大的意义就是为了缓解mysql的压力,正常服务下的redis能够对网站的性能起到积极的作用,但是redis也有宕机的可能,而对于一个基础架构不较完善的系统来说,可能带来的后果就是瞬间大批量的服务器请求直接将数据库击穿。

即使redis的备份机制再好,其宕机后的恢复也是需要一定的时间,因此redis也应该配备相应的集群系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php redis 数据库