一.简单说明

redis是非关系型数据库,是一种内存型数据库。数据存储在内存中,所以当我们关掉软件,或者拔掉电源时,内存中的数据就会丢失。针对此场景,这里提出持久化的方案。它的核心就是将内存中的数据存储到硬盘中进行持久化。

  • RDB: 基于快照的持久化,速度更快,一般用作备份。主从复制也是依赖于rdb持久化功能。
  • AOF:以追加的形式记录redis操作日志的文件。可以最大程度保证redis数据安全,类似于mysql的binlog。

二.持久化存储的方案

2.1 方案一___RDB持久化

这个是redis默认的持久化的方案,它的原理是在一定时间内检测key的变化情况,然后持久化数据。它可以手动执行save来触发持久化数据,也可以通过配置redis.conf文件,执行定时执行。

RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。涉及核心配置如下:

[root@k8s001 ~]# cat /etc/redis.conf
dbfilename s17dump.rdb # 指定rdb的数据文件
bind 0.0.0.0
requirepass redhat # 指定redis的密码
save 900 1 # 代表900秒内,有1个修改key的操作,就进行持久化
save 300 10 # 300秒内,有10个修改类的操作,就持久化
save 60 10000 # 60秒内,有10000个修改类的操作,就持久化

优点:速度快,适合做备份,主从复制就是基于RDB持久化功能实现

2.2 方案二__AOF持久化

这里不需要手动的save触发持久化。

记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。

涉及核心配置如下:

[root@k8s001 ~]# cat /etc/redis.conf
appendonly yes # 开启aof持久化的参数
appendfsync everysec # 每秒进行一次aof持久化

优点:最大程度保证数据不丢失。

缺点:日志记录非常大

RDB 优点:访问性能最佳 缺点:数据不安全、fork消耗极大

AOF 优点:数据相对安全 缺点:访问性能相对不在最佳

redis实现持久化存储的两种方案的更多相关文章

  1. Redis 持久化的两种方案

    reids是一个key-value存储系统,为了保证效率,缓存在内存中,但是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化. 所以:redis是一个支持持 ...

  2. 用Redis实现延迟队列,我研究了两种方案,发现并不简单

    大家好,我是三友~~ 背景 前段时间有个小项目需要使用延迟任务,谈到延迟任务,我脑子第一时间一闪而过的就是使用消息队列来做,比如RabbitMQ的死信队列又或者RocketMQ的延迟队列,但是奈何这是 ...

  3. 6.redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?

    作者:中华石杉 面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓存在内存里面,如果 redi ...

  4. Redis 的持久化有哪几种方式?

    面试题 redis 的持久化有哪几种方式? 不同的持久化机制都有什么优缺点? 持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再 ...

  5. 数据存储的两种方式:Cookie 和Web Storage

    数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡,这个购物卡里存放了一些你的个人信息,下次你再来这个连锁超市时, ...

  6. 数据存储的两种方式:Cookie 和Web Storage(转)

    数据存储的两种方式:Cookie 和Web Storage   数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡 ...

  7. .Net Core下使用RabbitMQ比较完备的两种方案(虽然代码有点惨淡,不过我会完善)

    一.前言     上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案,另外如果没看我上篇博客的人最好看一下,否则你可能看的云里雾里的,这里我就不进行具体的方案 ...

  8. 详解Grunt插件之LiveReload实现页面自动刷新(两种方案)

    http://www.jb51.net/article/70415.htm    含Grunt系列教程 这篇文章主要通过两种方案详解Grunt插件之LiveReload实现页面自动刷新,需要的朋友可以 ...

  9. Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  10. [转载]Java操作Excel文件的两种方案

    微软在桌面系统上的成功,令我们不得不大量使用它的办公产品,如:Word,Excel.时至今日,它的源代码仍然不公开已封锁了我们的进一步应用和开发.在我们实际开发企业办公系统的过程中,常常有客户这样子要 ...

随机推荐

  1. linux 下给网卡添加ipv6、路由

    route命令的使用举例如下:   route // 显示路由信息.   route add –host 192.168.1.110 dev eth0  // 给网卡eth0的路由表中加入新地址192 ...

  2. 【HTML】步骤进度条组件

    HTML步骤进度条 效果图 思路 分份: 有多少个步骤就可以分成多少分,每份宽度应该为100%除以步骤数,故以上效果图中的每份宽度应该为25%,每份用一个div. 每份: 每份中可以看成是三个元素,一 ...

  3. ASP.NET Core 全球化和本地化

    留备后观... Globalization and localization in ASP.NET Core 体验 ASP.NET Core 中的多语言支持(Localization)

  4. SQL Server 2008语句大全完整版

    --======================== --设置内存选项 --======================== --设置 min server memory 配置项 EXEC sp_co ...

  5. C#多线程编程(二)线程池与TPL

    一.直接使用线程的问题 每次都要创建Thread对象,并向操作系统申请创建一个线程,这是需要耗费CPU时间和内存资源的. 无法直接获取线程函数返回值 无法直接捕捉线程函数内发生的异常 使用线程池可以解 ...

  6. verilog利用线性插值实现正弦波生成器(dds)

    verilog实现线性插值实现正弦波生成器 ​ 最近在项目上遇到一个需要在低资源FPGA上实现FFT逻辑的项目,而且要求实现窗函数.对于窗函数来说,莫非是实现正弦波生成器,正弦波生成器可以利用DDS模 ...

  7. SaltStack 远程命令执行中文乱码问题

    问题 我在一台服务器上写了一个简单的 Python 脚本 haha.py,内容如下: [root@localhost ~]# cat haha.py print("你好") 当我在 ...

  8. 一次小而美的重构:使用 C# 在 Avalonia 中生成真正好看的词云

    前言 我之前不是开发 StarBlogPublisher(一款 Markdown 文章发布工具)吗? 当时里面有个分类 词云(Word Cloud) 展示功能. 初版的词云虽然 "能用&qu ...

  9. Python3正则表达式(一)

    Python3正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  10. CSS 魔法与布局技巧

    CSS 布局与视觉效果常用实践指南 在我一篇随笔中其实有说到十大布局,里面有提到 flex 布局.grid 布局.响应式布局,不过没有提到容器查询这个,现在说下这三个布局然后穿插下容器查询把. 1️⃣ ...