当前位置:嗨网首页>书籍在线阅读

08-无硬盘复制

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.1.6 无硬盘复制

8.1.2节介绍Redis复制的工作原理时介绍了复制是基于RDB方式的持久化实现的,即主数据库端在后台保存RDB快照,从数据库端则接收并载入快照文件。这样的实现优点是可以显著地简化逻辑,复用已有的代码,但是缺点也很明显。

(1)当主数据库禁用RDB快照时(即删除了所有的配置文件中的 save 语句),如果执行了复制初始化操作,Redis依然会生成RDB快照,所以下次启动后主数据库会以该快照恢复数据。因为复制发生的时间不能确定,这使得恢复的数据可能是任何时间点的。

(2)因为复制初始化时需要在硬盘中创建RDB快照文件,所以如果硬盘性能很慢(如网络硬盘)时这一过程会对性能产生影响。举例来说,当使用Redis作为缓存系统时,因为不需要持久化,所以服务器的硬盘读写速度可能较差。但是当该缓存系统使用一主多从的集群架构时,每次和从数据库同步,Redis都会执行一次快照,同时对硬盘进行读写,导致性能降低。

因此从2.8.18版本开始,Redis引入了无硬盘复制选项,开启该选项时,Redis在与从数据库进行复制初始化时将不会将快照内容存储到硬盘上,而是直接通过网络发送给从数据库,避免了硬盘的性能瓶颈。

目前无硬盘复制的功能还在试验阶段,可以在配置文件中使用如下配置来开启该功能:

repl-diskless-sync yes