一、Redis高可用
在web服务器中,高可用是指服务器可以正常访问的时问,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99% 99.998等等)。
但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、快速容灾技术),还需要考虑数据容量的扩展、数据安全不会丢失等。
在Redis中,实现高可用的技术主要包括持久化、主从复制、哨兵和cluster集群,下面分别说明它们的作用,以及解决了什么样的问题。
-
主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的,综上说书及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。
-
哨兵:在主从复制的基础上,哨兵实现了自动化的故障恢复。缺陷:写操作无法负载均衡;存储能力受到单机的限制。
-
集群:通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
-
持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失。
二、Redis持久化
1. 持久化功能
Redis是内存数据库,所有数据都是保存在内存中,为了避免服务器断电等原因导致Redis进程异常退出后数据永久丢失,需要定期将Redis中的数据以某种形式(数据或者命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此之外为了进行灾难备份,可以持久将文件拷贝到一个远程位置(比如备份服务器)。
2. Redis 进行持久化方式及其优缺点
-
RDB持久化:原理是将Redis在内存中的数据库记录 定时保存到磁盘上(快照)
-
AOF 持久化(append only file):原理是将Redis的 操作日志已追加的方式写入文件,类似于mysql的 binlog(增量备份)
优缺点:RDB持久化保存数据慢、实时性较差但是恢复比较快,缺点是若进程退出可能会丢失数据。
AOF持久化保存数据快、实时性较好但是恢复比较慢,进程退出不会造成数据丢失,即使丢失也就丢失最后很少一部分。
现在市场大部分用的是AOF持久化方式,不过RDB持久化仍然有其用武之地
3.RDB持久化原理,触发方式,执行过程。
(1)RDB持久化原理
RDB 持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,Redis从master主进程先fork出一个子进程,使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如:tmp-.rdb,当数据保存完成之后再将上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保证每一次做RDB快照保存的数据都是完整的。因为直接替换RDB文件的时候,可能会出现突然断电等问题,而导致RDB文件还没有保存完整就因为突然关机停止保存,而导致数据丢失的情况.后续可以手动将每次生成的RDB文件进行备份,这样可以最大化保存历史数据
标签:持久,可用,数据库,Redis,保存,RDB,数据 From: https://www.cnblogs.com/daiwei-123/p/17274162.html