文档章节

Redis持久化

仝玉甫
 仝玉甫
发布于 2015/04/23 18:48
字数 1685
阅读 436
收藏 21
点赞 1
评论 0

概述

默认情况下,Redis为纯内存缓存,但可以配置Redis持久化,将数据保存到硬盘进行容灾。

Redis支持RDB和AOF两种方式持久化。

简单的说两种方式区别:

RDB:定时持久化数据,性能比AOF高,适合对数据安全性要求不太高的场景。

AOF:实时持久化数据,性能较RDB差,适合对数据安全性高的场景。

详细论述见:http://redisdoc.com/topic/persistence.html

RDB

修改redis.conf,启用RDB(默认已启用):

  • save <seconds> <changes>

    指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb,可以同时配置多个。

    save 900 1    900秒内至少有1个key被改变

        save 300 10  300秒内至少有10个key被改变  

        save 60 10000  60秒内至少有10000个key被改变

  • dbfilename dump.rdb

    本地持久化数据库文件名,默认值为dump.rdb

  • dir ./

    数据库镜像备份的文件放置的路径。

    这里的路径跟文件名要分开配置。因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。

        AOF文件也会存放在这个目录下面。

        注意这里必须制定一个目录而不是文件。

AOF

修改redis.conf:

  • appendonly no

    only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。

    但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof 进行重新整理。

    你可以同时开启asynchronous dumps 和 AOF。

  • appendfsync everysec

    • Redis支持三种同步AOF文件的策略:

    • no: 不进行同步,系统去操作 . Faster.

    • always:表示每次有写操作都进行同步. Slow, Safest.

    • everysec: 表示对写操作进行累积,每秒同步一次.。默认是"everysec",按照速度和安全折中这是最好的。

    • 如果想让Redis能更高效的运行,你也可以设置为"no",让操作系统决定什么时候去执行。或者相反想让数据更安全你也可以设置为"always",如果不确定就用 "everysec"。

  • appendfilename appendonly.aof

    AOF文件名称 (默认: "appendonly.aof")

  • no-appendfsync-on-rewrite no

    AOF策略设置为always或者everysec时,后台处理进程(后台保存或者AOF日志重写)会执行大量的I/O操作。在某些Linux配置中会阻止过长的fsync()请求。注意现在没有任何修复,即使fsync在另外一个线程进行处理。为了减缓这个问题,可以设置下面这个参数no-appendfsync-on-rewrite。

备份 Redis 数据

在阅读这个小节前, 先将下面这句话铭记于心: 一定要备份你的数据库!

磁盘故障, 节点失效, 诸如此类的问题都可能让你的数据消失不见, 不进行备份是非常危险的。

Redis 对于数据备份是非常友好的, 因为你可以在服务器运行的时候对 RDB 文件进行复制: RDB 文件一旦被创建, 就不会进行任何修改。 当服务器要创建一个新的 RDB 文件时, 它先将文件的内容保存在一个临时文件里面, 当临时文件写入完毕时, 程序才使用 rename(2) 原子地用临时文件替换原来的 RDB 文件。

这也就是说, 无论何时, 复制 RDB 文件都是绝对安全的。

以下是我们的建议:

  • 创建一个定期任务(cron job), 每小时将一个 RDB 文件备份到一个文件夹, 并且每天将一个 RDB 文件备份到另一个文件夹。

  • 确保快照的备份都带有相应的日期和时间信息, 每次执行定期任务脚本时, 使用 find 命令来删除过期的快照: 比如说, 你可以保留最近 48 小时内的每小时快照, 还可以保留最近一两个月的每日快照。

  • 至少每天一次, 将 RDB 备份到你的数据中心之外, 或者至少是备份到你运行 Redis 服务器的物理机器之外。

容灾备份

Redis 的容灾备份基本上就是对数据进行备份, 并将这些备份传送到多个不同的外部数据中心。

容灾备份可以在 Redis 运行并产生快照的主数据中心发生严重的问题时, 仍然让数据处于安全状态。

因为很多 Redis 用户都是创业者, 他们没有大把大把的钱可以浪费, 所以下面介绍的都是一些实用又便宜的容灾备份方法:

  • Amazon S3 ,以及其他类似 S3 的服务,是一个构建灾难备份系统的好地方。 最简单的方法就是将你的每小时或者每日 RDB 备份加密并传送到 S3 。 对数据的加密可以通过 gpg -c 命令来完成(对称加密模式)。 记得把你的密码放到几个不同的、安全的地方去(比如你可以把密码复制给你组织里最重要的人物)。 同时使用多个储存服务来保存数据文件,可以提升数据的安全性。

  • 传送快照可以使用 SCP 来完成(SSH 的组件)。 以下是简单并且安全的传送方法: 买一个离你的数据中心非常远的 VPS , 装上 SSH , 创建一个无口令的 SSH 客户端 key , 并将这个 key 添加到 VPS 的 authorized_keys 文件中, 这样就可以向这个 VPS 传送快照备份文件了。 为了达到最好的数据安全性,至少要从两个不同的提供商那里各购买一个 VPS 来进行数据容灾备份。

需要注意的是, 这类容灾系统如果没有小心地进行处理的话, 是很容易失效的。

最低限度下, 你应该在文件传送完毕之后, 检查所传送备份文件的体积和原始快照文件的体积是否相同。 如果你使用的是 VPS , 那么还可以通过比对文件的 SHA1 校验和来确认文件是否传送完整。

另外, 你还需要一个独立的警报系统, 让它在负责传送备份文件的传送器(transfer)失灵时通知你。

© 著作权归作者所有

共有 人打赏支持
仝玉甫
粉丝 5
博文 15
码字总数 11114
作品 0
浦东
程序员
redis-持久化

Redis持久化的方式有两种: 一、SnapShotting 快照持久化: 1、持久化的配置: 此持久化默认开启,一次性把Redis中所有数据保存到硬盘中,如果数据非常多(10-20G)就不适合频繁进行该持久化...

lzf05303774
2017/07/28
0
0
Redis高并发2-redis数据持久化整体说明

redis的持久化,RDB,AOF,区别,各自的特点是什么,适合什么场景 redis的企业级的持久化方案是什么,是用来跟哪些企业级的场景结合起来使用的??? redis持久化的意义,在于故障恢复 比如你...

久违了java
03/18
0
0
Redis Cluster在线迁移

前言 Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。 Redis持久化了解 ...

qianghong000
06/26
0
0
春夏秋冬又一春之Redis持久化

历史文章推荐: 一只准程序猿的唠叨 可能是最漂亮的Spring事务管理详解 Java多线程学习(八)线程池与Executor 框架 面试中关于Redis的问题看这篇就够了 非常感谢《redis实战》真本书,本文大...

snailclimb
06/13
0
0
小蚂蚁学习Redis笔记(11)——Redis重要特性——持久化机制

持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化。 Redis支持两种持久化机制: snapshooting (快照)也是默认的方式。把数据做...

嗜学如命的小蚂蚁
2015/11/20
0
0
redis如何关闭持久化

网上找了半天也没好的资料,自己整理发出来。 网上一堆都是怎么开启持久化,持久化的各种特点分析的。千篇一律。 如何关闭redis持久化?我的需求是只把redis当作缓存来用,所以持久化到硬盘对...

明舞
2015/09/16
8.1K
8
Redis AOF持久化和RDB持久化区别

一、redis持久化----两种方式 1、redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 2、RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照...

zenge_blog
06/26
0
0
如何彻底禁止 Redis 持久化功能

文/Fenying 公司有一台测试服务器,其中跑着一个 WordPress 站点。不知道什么时候开始,每次服务器重启,WordPress 的一些数据(例如角色权限)会还原到N久之前的样子。各种查代码没看出来,...

Fenying
03/08
0
0
redis 持久化存储之aof和设置密码

Redis 进入Redis设置密码 redis 127.0.0.1:6379[1]> config set requirepass my_redis OK [root@jcsjzx2017 ~]# redis-cli 127.0.0.1:6379> config get requirepass (error) NOAUTH Authent......

运维天空
2017/11/11
0
0
Redis的持久化和配置教程

前言 Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。 Redis支持两种方式的持久化,一...

刘大磊的博客
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Dubbo 源码解读 —— 可支持序列化及自定义扩展

一、概述 从源码中,我们可以看出来。目前,Dubbo 内部提供了 5 种序列化的方式,分别为 fastjson、Hessian2、Kryo、fst 及 Java原生支持的方式 。 针对不同的序列化方式,对比内容如下: 名...

Ryan-瑞恩
13分钟前
0
0
MySQL内存设置—— MySQL server has gone away

set global max_allowed_packet=268435456

一梦心草
22分钟前
0
0
推导式

列表、集合和字典推导式 列表推导式是Python最受喜爱的特性之一。它允许用户方便的从一个集合过滤元素,形成列表,在传递参数的过程中还可以修改元素。形式如下: [expr for val in collect...

火力全開
27分钟前
0
0
maven配置文件settings.xml详解

settings.xml有什么用? 如果在Eclipse中使用过Maven插件,想必会有这个经验:配置settings.xml文件的路径。 settings.xml文件是干什么的,为什么要配置它呢? 从settings.xml的文件名就可以...

浮躁的码农
32分钟前
0
0
MakeCode图形化编程语言学习笔记:micro:bit编程练习题[图]

MakeCode图形化编程语言学习笔记:micro:bit编程练习题[图]: 基础训练题: Q1:摇晃micro:bit编程板,随机出现7个小动物图标中的一个,并且前后相邻两次出现的小动物不重复。 注:七个小动物...

原创小博客
32分钟前
0
0
Redis 压力测试说明

Redis 压力测试说明 redis压力测试 2014-03-24 21:41:07| 分类: 默认分类 | 标签:redis |举报|字号 订阅 这几天对比测试mongodb、redis、pg的性能,主要是在消息队列、消息处理、用户经纬度...

舒文joven
33分钟前
0
0
拉姆达表达式 追加 条件判断 Expression>

public static class PredicateBuilder {   /// <summary>   /// 机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效   /// </summary...

Lytf
45分钟前
0
0
【HAVENT原创】Spring Boot + Kafka 消息日志开发

最近因为部门需要将服务程序的各种日志发送给 Kafka 进行分析,所以写一个 Kafka 消息日志操作类,主要用来保存日志到 Kafka 以便查询。 一、pom.xml 增加配置 <!-- HH: 引入 kafka 模块 ...

HAVENT
45分钟前
0
0
7、Git命令解析

1、创建版本库 cd E:mkdir myRepositorypwdls -ah======git init 2、添加文件到仓库 添加git add readme.txt提交git commit -m "i wrote a readme file"【为什么Git添加...

丑陋的皮囊
46分钟前
0
0
ImageMagick批量压缩图片

#!/bin/shfor img in `find ./image -name "*.jpg"`; donewimg=`basename $img` convert -quality 75% $img ./ok/$newimg echo ./ok/$newimgdone...

dworry
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部