将内存中的数据写入磁盘中
RDB:是一个非常紧凑的文件适合做冷备份,保存redis在某个时间点上的数据集,保存到.rdb文件中在BDSAVE 过程中 redis会fork()一个子进程和父进程(双胞胎)可共享内存数据,子进程执行持久化操作保存数据到临时文件中保证redis有极高的性能。会有数据丢失 对于大规模的更新可根据rdb恢复数据( 1G的数据 会同步20多分钟)
AOF:一些操作redis的命令保存到aof文件中;可以设置不同的fsync策略(默认每秒一次,把page信息和层级信息写入磁盘,后台进行);文件的内容只进行追加 ,当出现磁盘满、数据丢失,可通过redis-check-aof 恢复;一旦新的AOF创建完成,redis会切换到新的AOF文件一系列追加操作
;AOF文件的体积通常大于RDB文件;但
如果同时使用RDB和AOF两种持久化机制,那么redis重启的时候,会使用AOF来构建数据,因为AOF的数据更加完整。达到一定程度,执行rewrite
综合AOF和RDB两种持久化方式,用AOF来保证数据不丢失,作为恢复数据的第一选择;用RDB来做不同程度的冷备,在AOF文件都丢失或损坏不可用的时候,可以使用RDB进行快速的数据恢复。
redis本是单线程的,它是否可以承载高并发的请求
redis支持 主从复制(master-slave) 模式 ,多读少写请求,
原理:
slaver node 会根据配置 保存master 的信息 host和ip以及 offset,每个都有一个定时任务,检查是否有 这个连接,建立socket网络之后会发送ping命令给master;
如果是第一次复制,执行全局复制,并将RDB文件给slave,持续复制写的命令给slave 。slve会清空自己的数据,之前基于旧数据提供服务
master和slave都会维护offset(版本冲突),maset会追加不同的slave的offset以及master的运行的id
master会每10秒发送心跳,slave会每一秒发送一次
如何实现高可用
哨兵机制
必须部署2个以上的节点,那么quorum等于1(不同意选举个数)majority(同意选举的个数)1不大于1,无法判断是否主备切换
官网