Redis持久化,你真的懂了吗

为什么要持久化


Redis是一个基于内存的非关系型数据库,想必大家都知道,基于内存意味着:一旦服务器断电或者出现其他故障,存储在内存中的数据就会丢失。为了安全,Redis提供了持久化这个机制进行保障,简单来说,持久化就是将存储在内存中的数据转存到硬盘上。这样服务器重新启动时,就可以将数据从硬盘上恢复。
Redis提供了两种持久化方式:RDB和AOF。下面分别进行介绍。

RDB


简单来说,RDB是指将某个时刻的内存数据存储到本地磁盘上一个叫做 dump.rdb 的文件中。它是一种快照存储持久化方式,在Redis服务启动的时候,会从该文件中恢复数据。 一般有两种方式开启RDB持久化:配置文件和Redis命令。
先看配置文件。(以下操作皆在Linux环境中进行)
可以使用 whereis redis 指令查看Redis配置文件的所在路径。找到配置文件 redis.conf 后,切换到root用户,使用 cat 指令打开配置文件。

SNAPSHOTTING,是快照的意思,再看注释部分,很显然这就是我们要找的RDB,重点看下方的save指令。
save 900 1save 300 10save 60 10000//根据配置文件中save指令格式以及注释可以知道,//第一条指令意为:在900秒后,如果至少有1个键被改变,那么就会进行持久化,//后面两条指令同理。
这是在配置文件中进行RDB的配置,我们可以根据实际情况修改save指令。

再看如何使用客户端命令开启RDB。
redis-server 开启Redis服务,redis-cli 连接Redis客户端。可以使用 save 命令来开启RDB,也可以使用bgsave命令。

既然 save 和 bgsave 都可以开启RDB,那么这两者有何区别呢。
  1. 在客户端使用save命令请求服务器进行数据持久化时,服务器会阻塞其它客户端的请求,直到持久化完成。一旦数据量太大,持久化时间会很长,其它请求又被阻塞,会严重影响性能,所以不要轻易在生产环境使用save命令。

  2. 使用bgsave时,Redis会调用系统函数fork()创建出一个子进程来进行持久化,完成之后子进程便会销毁,但是在fork出子进程期间,Redis仍然不能接受其它客户端请求。


AOF


AOF持久化的原理是:记录下客户端对服务器的每一次写操作,并将这些写操作存进 appendonly.aof 文件中,在Redis服务器重启时,加载并执行这些写操作,以此来恢复数据。
我们同样可以在Redis配置文件中进行AOF配置。

指令 appendonly no 表示AOF持久化是关闭的,这也说明Redis默认使用RDB。

Redis支持三种不同类型的AOF模式。appendfsync always //表示客户端的每一个写操作都记录到aof文件中。appendfsync everysec //每秒写入一次,是默认的AOF模式。appendfsync no //什么时候写入aof文件由操作系统来处理,Redis不负责。
可以根据实际来选择使用哪种模式,否则everysec是默认的AOF模式。

同样,我们也可以通过命令行来开启AOF,命令如下。
config set appendonly yes  // 开启AOFconfig set appendfsync no/always/everysec  //选择模式//顺带一提,可在Redis客户端使用config get dir查看rdb和aof文件的路径。
AOF是一种只记录写入命令的追加式日志文件,由于每个写入命令都会被追加到aof文件中,所以AOF的数据一致性比RDB高,持久化速度更快。
如果觉得这篇文章有用的话,可以扫码关注一下公众号哦。

    


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 1,630评论 0 2
  • 企业级redis集群架构的特点 海量数据 高并发 高可用 要达到高可用,持久化是不可减少的,持久化主要是做灾难恢复...
    lucode阅读 2,232评论 0 7
  • 本文是《Redis开发与运维》的学习笔记。内容大部分摘自此书。 众所周知,redis是内存数据库,它把数据存储在内...
    大数据Zone阅读 586评论 0 3
  • 前言: Redis是一个键值对数据库服务器,因为它是内存数据库,它将数据都保存在内存里面,所以如果不想办法进行持久...
    但时间也偷换概念阅读 1,400评论 0 6
  • 今天,我们全家一起第一次见到了大雪压青松的场面。 想象中的雪是松松软软的,因为远远望去那一堆一堆洁白的物...
    朱晓玲_阅读 206评论 0 0