IT外包网管服务,Redis持久化原理初探

发布者:上海IT外包来源:http://www.lanmon.net点击数:853

      蓝盟IT小贴士,来喽!
  Redis是一个内存数据库,为了确保数据的持久性,Redis提供了两种持久性RDB和AOF。 以下是这两种持久化方式的实现原理。
  RDB (标准)
  RDB是以快照方式创建的,当满足某些条件时,redis会自动将内存中的数据永久化到磁盘。
  触发快照的时间
  符合自定义配置的快照规则。 (由redis.conf组成。 详情后述)
  执行save或bgsave命令
  执行flushall命令
  执行主从复制操作(首次)

     
  快照正在进行,即在文件生成过程中,在不修改现有的rdb文件的情况下,将旧文件替换为新文件,直到快照生成完成为止,确保rdb文件随时完整。
  通过定期备份rdb文件,可实现redis数据的备份。 rdb是压缩的二进制文件,占用面积小,传输方便
  RDB的优缺点
  如果redis因缺陷:RDB而持久,并且突然异常终止,则最后一个快照之后的数据将丢失。 然而,根据组合设置自动快照可以减少数据丢失,并且保持在可接受的范围内。 如果数据很重要,可以使用AOF方法
  优势:RDB方案可以最大限度地提高redis性能。 在快照期间,主进程只需要fork发出一个子进程,其馀的任务都将完成,父进程不需要磁盘I/O操作。 但是,如果数据集很大,fork子进程会花费很长时间,redis会在一段时间内停止处理请求。
  AOF方式
  默认情况下,redis未启用“仅打开文件”( aof )。 启动AOF后,redis每次收到更改redis数据的命令时,都会将该命令写入硬盘的AOF文件。 很明显,此过程会降低redis的性能,但在大多数情况下可以接受,同时使用性能良好的硬盘可以提高AOF的性能
  命令传播
  redis将执行的指令、指令引数、指令引数等发送至AOF程序。 当redis客户端执行命令时,通过连接向redis发送协议文本,在redis收到协议文本后,根据内容选择适当的命令函数,将协议文本转换为redis字符串对象,并执行命令函数
  添加缓存
  当AOF程序接收到命令参数时,它将字符串对象转换为协议内容,并将协议内容添加到AOF高速缓存中。 AOF缓存将在redisServer结构的aof_buf中添加新内容,并在aof_buf的末尾添加新内容。 AOF_buf保留所有未写入aof文件的协议文本。

      蓝盟专业IT服务18年

IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部