rdb

Redis 持久化之RDB和AOF

六月ゝ 毕业季﹏ 提交于 2019-11-27 04:38:20
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看总结。本章节通过配置文件,触发快照的方式,恢复数据的操作,命令操作演示,优缺点来学习 Redis 的重点知识 持久化 。 RDB 详解 RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。 从配置文件了解RDB 打开 redis.conf 文件,找到 SNAPSHOTTING 对应内容 1 RDB核心规则配置(重点) save <seconds> <changes> # save "" save 900 1 save 300 10 save 60 10000 解说:save <指定时间间隔> <执行指定次数更新操作>,满足条件就将内存中的数据同步到硬盘中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒内有10000个更改,则将内存中的数据快照写入磁盘。 若不想用RDB方案,可以把 save "" 的注释打开,下面三个注释。 2 指定本地数据库文件名,一般采用默认的 dump.rdb dbfilename dump

Redis主从复制看这篇就够了

放肆的年华 提交于 2019-11-27 02:34:33
什么是主从复制 持久化保证了即使 redis 服务重启也会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单点故障,如下图: 说明: 主 redis 中的数据有两个副本(replication)即从 redis1 和从 redis2,即使一台 redis 服务器宕机其它两台 redis 服务也可以继续提供服务。 主 redis 中的数据和从 redis 上的数据保持实时同步,当主 redis 写入数据时通过主从复制机制会复制到两个从 redis 服务上。 只有一个主 redis,可以有多个从 redis。 主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求。 一个 redis 可以即是主又是从,如下图: 主从配置 1、主 redis 配置 无需特殊配置。 2、从redis配置 修改从 redis 服务器上的 redis.conf 文件,添加 slaveof 主 redisip 主 redis 端口。 上边的配置说明当前该从 redis 服务器所对应的主 redis 是192.168.101.3,端口是6379。 主从复制过程 1、完整复制过程 在 redis2.8 版本之前主从复制过程如下图: 复制过程说明:

一文了解腾讯云数据库SaaS服务

故事扮演 提交于 2019-11-26 22:41:47
本文由云+社区发表 **作者:**邵宗文,2009年加入腾讯,现为腾讯云数据库专家产品经理。之前曾负责为OMG事业群构建数据库平台,部署,规划及运维支持,为腾讯网,新闻客户端,快报,视频,财经,体育等提供了稳定的服务。06-09年曾任新浪数据库专家,数据库平台主管,有非常丰富的海量大数据经验。 下方视频为邵宗文在未来大会演讲实录。每个行业对数据库有不一样的要求,云上数据库通过智能化运维,数据会越来越多,准确度也越来越高,模型也会越来越精准。腾讯云上数据库如何满足用户多样化的诉求?一起来听听吧。 数据库SaaS服务体系 数据SaaS服务涵盖用户从上云,日常运维使用,数据安全审计,及订阅商业分析。 腾讯云数据库让您可以轻松在云端部署、使用数据库。通过云数据库MySQL,您在几分钟内即可部署可扩展的数据库实例。不仅经济实惠,而且可以弹性调整硬件容量的大小而无需停机。TencentDB for MySQL 提供备份回档、监控、快速扩容、数据传输等数据库运维全套解决方案,为您简化 IT 运维工作,让您能更加专注于业务发展。 数据库迁移 数据传输服务(Data Transmission Serivce DTS)提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务,帮助您在业务不停服的前提下轻松完成数据库迁移,利用实时同步通道轻松构建异地容灾的高可用数据库架构

Redis应用学习(五)——Redis持久化的选择与取舍

别来无恙 提交于 2019-11-26 17:20:31
1. 持久化的作用 1. 持久化:Redis运行时所有的数据都保存在内存中,对数据的更新将会异步的存储到磁盘中,当Redis需要恢复数据时就加载磁盘中的数据 2. 持久化的实现方式: 快照:简单来说,就类似于用一个照相机将某个时间点的Redis中的数据“拍摄”下来保存在“照片”中,“照片”就是快照文件,将快照保存在磁盘中,即实现持久化,具体实现比如MySQL数据库中的MySQL Dump功能和Redis RDB功能 日志文件记录:将对数据的更新操作全部记录在一个日志文件中,当需要恢复数据时,只需要重新执行一遍日志中的操作即可,具体实现比如MySQL数据库中的MySQL Binlog功能和Redis AOF功能 2. Redis中的数据持久化方式——RDB 1. RDB :以快照方式来实现Redis数据的持久化操作,Redis执行一条RDB指令,生成一个RDB文件(二进制)并保存到硬盘中,该文件中保存了生成该文件时Redis中存储的所有数据,当Redis需要恢复这些数据时(比如重启)就可以重新加载这个RDB文件来恢复数据。RDB文件还有另一个用处,就是可以使用该文件来实现数据复制。 2. 生成RDB文件的触发条件 : save(同步): save ,直接在客户端中执行该命令,Redis就会生成一个RDB文件,同步执行指的是该命令会与普通命令一样,在唯一的命令队列(单线程)里排队

快速掌握Redis——第六招:持久化 (数据备份与恢复)

浪尽此生 提交于 2019-11-26 17:12:04
1 何为持久化 redis 是内存数据库,掉电会丢失,转移数据不便。持久化就是内存数据到硬盘数据的转化。 当然,也可以硬盘到内存(备份的概念,保存,恢复)。 2 怎么实现 两种方法: 快照方式(rdb)+日志方式(aof) 快速+最大化redis性能+方便:rdb 模式 更持久:aof 模式 建议:合理的同时使用这两种方式。 2.1 rdb 快照模式 Snapshotting (快照) 语法 快照是默认的持久化方式(内存全拷贝)。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久 化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照,下面是默认的快照保存配置。(建议从下往上看,60s-300s-900s) save 900 1 //900秒内如果超过1个key被修改,则发起快照保存 save 300 10 //300秒内容如超过10个key被修改,则发起快照保存 save 60 10000 //(这3个选项都屏蔽,则rdb禁用) stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入 rdbcompression yes // 导出的rdb文件是否压缩 Rdbchecksum yes // 导入rbd恢复时数据时

04、redis主从复制原理、断点续传、无磁盘化复制、过期key处理

女生的网名这么多〃 提交于 2019-11-26 16:09:31
1、主从架构的核心原理 当启动一个slave node的时候,它会发送一个PSYNC命令给master node 如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据; 否则如果是slave node第一次连接master node,那么会触发一次full resynchronization 开始full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将从客户端收到的所有写命令缓存在内存中。RDB文件生成完毕之后,master会将这个RDB发送给slave,slave会先写入本地磁盘,然后再从本地磁盘加载到内存中。然后master会将内存中缓存的写命令发送给slave,slave也会同步这些数据。 slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有slave node。 2、主从复制的断点续传 从redis 2.8开始,就支持主从复制的断点续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份 master node会在内存中常见一个backlog

Redis持久化的几种方式——深入解析RDB

孤街浪徒 提交于 2019-11-26 09:35:00
Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。 Redis 持久化也是 Redis 和 Memcached 的主要区别之一,因为 Memcached 是不具备持久化功能的。 1.持久化的几种方式 Redis 持久化拥有以下三种方式: 快照方式 (RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘; 文件追加方式 (AOF, Append Only File),记录所有的操作命令,并以文本的形式追加到文件中; 混合持久化方式 ,Redis 4.0 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能简单数据丢失的风险。 因为每种持久化方案,都有特定的使用场景,让我们先从 RDB 持久化说起吧。 2.RDB简介 RDB(Redis DataBase)是将某一个时刻的内存快照(Snapshot),以二进制的方式写入磁盘的过程。 3.持久化触发 RDB 的持久化触发方式有两类:一类是手动触发

如何设计一个本地缓存

烂漫一生 提交于 2019-11-25 21:34:40
前言 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能;当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距;本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)等策略; 4.过期时间 除了使用清除策略,一般本地缓存也会有一个过期时间设置,比如redis可以给每个key设置一个过期时间,这样当达到过期时间之后直接删除,采用清除策略+过期时间双重保证; 5.线程安全

Redis持久化

故事扮演 提交于 2019-11-25 20:54:23
> 为什么要做持久化存储? 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会导致存储在内存中的数据丢失。 > 持久化存储分类 在 Redis 中,持久化存储分为两种。一种是 aof 日志追加的方式,另外一种是 rdb 数据快照的方式。 > RDB 持久化存储 什么是RDB持久化存储 RDB 持久化存储即是将 redis 存在内存中的数据以快照的形式保存在本地磁盘中。 .RDB持久化存储分为自动备份和手动备份 1.手动备份通过 save 命令和 bgsave 命令。save 是同步阻塞,而 bgsave 是非阻塞(阻塞实际发生在 fork 的子进程中)。因此,在我们实际过程中大多是使用 bgsave 命令实现备份. redis> SAVE OK redis> BGSAVE Background saving started 2.自动备份 a.修改配置项 save m n 即表示在 m 秒内执行了 n 次命令则进行备份. b.当 Redis 从服务器项主服务器发送复制请求时,主服务器则会使用 bgsave 命令生成 rbd 文件,然后传输给从服务器. c.当执行 debug reload 命令时也会使用 save 命令生成 rdb