《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
- 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 安装并启动 ...
随机推荐
- android平台的三个编译命令——make,mm,mmm
在Android源码根目录下,执行以下三步即可编译android: 1. build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3 ...
- 再战android-语音识别1(科大讯飞)
重新拾起刚入门的android,开发个小工具,一来不让自己离开发太远,二来看能否做出一个帮助自己管儿子学习的东西. 这次的主题是语音识别.稍微研究了下,开放的语音识别平台,本地识别的担心识别率问题,在 ...
- Java知多少(1) 语言概述
Java语言是SUN(Stanford University Network,斯坦福大学网络公司)公司1995年推出的一门高级编程语言,起初主要应用在小型消费电子产品上,后来随着互联网的兴起,Java ...
- Java如何从文件中打印与给定模式匹配的所有字符串?
在Java编程中,如何从文件中打印与给定模式匹配的所有字符串? 以下示例显示了如何使用Util.regex类的Patternname.matcher()方法从文件中打印与给定模式匹配的所有字符串. p ...
- Java查找出现的单词
如何找到一个单词的每个出现? 解决方法 下面的例子演示了如何使用Pattern.compile()方法和m.group()方法找到一个词出现次数. import java.util.regex.Mat ...
- 超简单Windows安装Scrapy (仅需一步)
网上很多关于windows安装Scrapy的教程都非常的繁琐,请看我给大家分享的教程,非常简单 一步完成. 超简单的安装方法: 下载地址: https://www.continuum.io/downl ...
- DedeCMS中channelartlist自增参数global.itemindex
在 dede:channelartlist 标签下,使用: {dede:global.itemindex runphp='yes'} {/dede:global.itemindex} dede:cha ...
- [OpenCV] Install OpenCV 3.4 with DNN
目标定位 一.开始全面支持 Tensorflow OpenCV3.4 新功能 当前最新进展OpenCV 3.4 dev:https://github.com/opencv/opencv/tree/ma ...
- Asp.Net Identity cookie共享
n the Startup.Auth.cs file, add the CookieDomain parameter with your domain: var cookieAuthenticatio ...
- 利用python对微信自动进行消息推送
from wxpy import * #该库主要是用来模拟与对接微信操作的 import requests from datetime import datetime import time impo ...