美文网首页程序员
Redis持久化,你真的懂了吗

Redis持久化,你真的懂了吗

作者: 封心_SH | 来源:发表于2019-10-12 18:47 被阅读0次
为什么要持久化 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持久化,你真的懂了吗

    在客户端使用save命令请求服务器进行数据持久化时,服务器会阻塞其它客户端的请求,直到持久化完成。一旦数据量太大,...

  • 【5分钟背八股】redis持久化RDB和AOF?

    Redis 持久化 Redis 提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行...

  • Redis持久化

    一、Redis的持久化 Redis 提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据...

  • Redis持久化

    一、Redis的持久化 Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进...

  • Redis-2 数据持久化及持久化配置

    一、数据持久化 开启持久化功能后,重启redis,数据会自动通过持久化文件恢复!! 1、redis持久化 – 两种...

  • Redis之持久化

    参考 深入学习Redis(2):持久化 转载自icyfire-Redis持久化 Redis有两种持久化的方式:快照...

  • 关于redis的几件小事(六)redis的持久化

    1.redis持久化的意义 redis持久化的意义,在于 故障恢复 。如果没有对数据进行持久化,那么如果redis...

  • Redis持久化

    Redis持久化 RDB (Redis DataBase) AOF(Append only file) 持久化的两...

  • Redis持久化策略(看这篇,你肯定会有所获)

    今天学习总结下redis 的持久化策略. Redis 持久化策略 RDB:Redis DataBase , 记录快...

  • redis笔记(四)redis持久化

    redis持久化 Redis持久化机制:redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中...

网友评论

    本文标题:Redis持久化,你真的懂了吗

    本文链接:https://www.haomeiwen.com/subject/dglcmctx.html