一、Redis的主从复制
Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master),一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而从数据库只能有一个主数据库。
通过redis的复制功能可以很好地实现数据库的读写分离,提高服务器的负载能力,主数据库主要负责写操作,而从服务器负责读操作。
redis主从复制的过程:
1、当一个从数据库启动时,会向主数据库发送sync命令
2、主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3、当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库
4、从数据库收到命令后,会载入快照文件并执行收到的缓存的命令
二、Redis的持久化机制
redis持久化,就是将内存数据保存到硬盘
包括RDB和AOF两种模式
1、RDB持久化
是以二进制文件,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上一次持久化的文件,达到数据恢复。
优点:使用单独子进程进行持久化,主进程不会进行任何IO操作,保证了redis的高性能
缺点:RDB是间隔一段时间持久化,如果持久化期间redis发生故障,会发生数据丢失。
2、AOF持久化
Append-only file,将“操作+数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者即将写入),才进行实际数据的变更,“日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。AOF相对可靠,文件内容是字符串,非常容易阅读和理解。
优点:可以保持更高的数据完整性
缺点:AOF文件比RDB文件大,且恢复速度慢。
网友评论