《Redis 持久化》
一:什么是持久化?
- Redis 是内存级别的数据库。所谓持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)中。
- 可以持久读取操作等的数据。
- Redis 支持 RDB/AOF 的持久化方式
二:RDB 持久化
- 本质
- 通过 快照 方式来进行持久化。
- RDB 配置
- ################################ SNAPSHOTTING #################################
- # 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
- # Save the DB on disk:
- #
- # save <seconds> <changes>
- #
- # Will save the DB if both the given number of seconds and the given
- # number of write operations against the DB occurred.
- #
- # 满足以下条件将会同步数据:
- # 900秒(15分钟)内有1个键被更改
- # 300秒(5分钟) 内有10个键被更改
- # 60秒 内有10000个键被更改
- # Note: 可以把所有“save”行注释掉,这样就取消同步操作了
# 因为 RDB 只做后备使用,建议只在 slave 下进行, 15 分钟同步一次就可以,也就是说只保留 save 900 1 这个设置 - save
- save
- save
- # 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
- rdbcompression yes
- # 指定本地数据库文件名,默认值为dump.rdb
- dbfilename dump.rdb
- ################################ SNAPSHOTTING #################################
- RDB 相关命令
- 手动执行 SAVE / BGSAVE 生成快照。
- 在执行 SAVE 时, Redis会同步执行快照,同时堵塞其他客户端命令,所以要避免在生产环境中直接使用。
- 手动快照推荐 BGSAVE ,后台执行,对其他客户端无影响。
- 执行 LASTSAVE 可以查看最近一次快照的时间戳。
- 原理
- Redis 在执行快照时使用 fock 函数复制一份当前进程(父进程)的副本(子进程);
- 父进程继续接受客户端请求,子进程写入。
- 子进程写入完成之后,用临时文件替换旧的 RDB 文件,一次快照完成。
三:AOF 持久化
- 基本概念
- Redis 默认是不开启 AOF 持久化的。
- AOF 配置
- # 配置 appendonly 开启 AOF 持久化appendonly yes# AOF 持久话文件名名称appendfilename “appendonly.aof"# AOF 持久化策略# always 每次写入同步(最安全/慢)# everysec 默认。每秒异步同步一次,如果一秒钟内宕机,有数据丢失# no 将缓存回写的策略交给系统,linux 默认是30秒将缓冲区的数据回写硬盘的appendfsync always# rewrite 重写日志# 重新整理 AOF 日志。# 在 rewrite 结束之后,rewrite产生的新数据会导致文件的I/O,所以硬盘足够的情况下,应该减小重写次数,默认大小可以设置到 5G 以上auto-aof-rewrite-percentage 100 // 大于上次重写的百分比auto-aof-rewrite-min-size 64mb // 允许重写的最小
四:AOF / RDB 相关
- RDB与AOF同时开启 默认先加载AOF的配置文件
- 相同数据集,AOF文件要远大于RDB文件,恢复速度慢于RDB
- AOF运行效率慢于RDB,但是同步策略效率好,不同步效率和RDB相同
五:应用场景
- 备份
- 对数据一致性有要求的请使用 AOF
- 当数据量大,且对恢复速度有要求,并且数据的一致性要求不高的话,可以只使用RDB
- 只做缓存
- 不用开启任何的持久化方式
《Redis 持久化》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- hive表增量抽取到mysql(关系数据库)的通用程序(三)
hive表增量抽取到oracle数据库的通用程序(一) hive表增量抽取到oracle数据库的通用程序(二) 这几天又用到了该功能了,所以又改进了一版,增加了全量抽取和批量抽取两个参数.并且可以设置 ...
- vmware-hostd.exe 占用443端口导致Apache无法正常启动?
问题: [Apache] Problem detected!16:23:19 [Apache] Port 443 in use by ""D:\vmware\VMware W ...
- [Full-stack] 世上最好语言 - PHP
前言 本篇是对个人PHP, Laravel系列博文的总结与思考. 目的在于理清并熟练如下过程: "需求 --> Usercase --> UI --> 框架 --> ...
- [Laravel] 06 - Project: from Usercase to View
故事背景 一.项目预览 From: https://www.imooc.com/video/12518 二.知识点 通过项目复习之前的重难点,在此列出并解决. /* implement */ 项目开始 ...
- 《Python3网络爬虫开发实战》
推荐:★ ★ ★ ★ ★ 第1章 开发环境配置 第2章 网页基础知识 第3章 网络爬虫基础 第4章 基本库的使用 第5章 解析库的使用 第6章 数据存储 第7章 Ajax数据爬取 第8章 动态渲染页面 ...
- IDEA 2017 安装后 关联SVN
IDEA 2017 安装后,SVN checkout时候会出现如下错误: Cannot run program "svn" (in directory "D:\demo\ ...
- JS中判断一个对象是否为null、undefined、0
1.判断undefined: var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined ...
- 如何去除Launcher默认的google search bar?
JB2/JB3/JB5/JB9版本: 1. 请修改 Launcher2/res/layout/qsb_bar.xml,如下:<include android:id="@+id/qsb_ ...
- 利用System.Uri转URL为绝对地址
在使用ASPOSE.Word生成Word文档时可以通过InsertHtml(html)来将图文信息写入Word文档(图片内嵌),但要求html里图片的src是绝对全路径,所以需要对html进行转化. ...
- 基础知识系列☞关键字→virtual
看到自己以前的一篇博客,感觉还差点什么,√,代码... using System; namespace Test { public class Program { private static voi ...