数据持久化

redis整理の持久化机制

主宰稳场 提交于 2020-02-13 05:20:03
  redis是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到磁盘 来保证持久化。redis 支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另 一种是 Append-only file(缩写 aof)的方式。    snapshotting方式   快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中, 默认的文件名为 dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置 redis 在 n 秒内如果超过 m 个 key 被修改就自动做快照,下面是默认的快照保存配置   save 900 1 #900 秒内如果超过 1 个 key 被修改,则发起快照保存   save 300 10 #300 秒内容如超过 10 个 key 被修改,则发起快照保存   save 60 10000   下面介绍详细的快照保存过程:   1.redis 调用 fork,现在有了子进程和父进程。   2. 父进程继续处理 client 请求,子进程负责将内存内容写入到临时文件。由于 os 的实时复 制机制(copy on write)父子进程会共享相同的物理页面,当父进程处理写请求时 os 会为父 进程要修改的页面创建副本,而不是写共享的页面。所以子进程地址空间内的数据是

Redis4.0之持久化存储(下)

自作多情 提交于 2020-02-13 01:34:34
十,Redis的RDB存储方式 10.1 redis的运行方式说明 redis如果提供缓存服务,可以关闭所有持久化存储,如此一来redis重启后所有数据会丢失 开启rdb或aof持久化存储,能把redis中的数据持久化到磁盘中。 rdb和aof对性能都有影响,所以建议持久化的操作在从库上进行 10.2 redis rdb存储方式,使用save配置开启rdb存储或者关闭rdb存储 #与rdb相关的配置文件信息 dir / data / redis / #dir为rdb存储的路径 dbfilename dump . rdb #rdb存储文件的名字 save 60 10000 #60s改变10000key,触发rdb存储 save 300 10 #300s改变10个key,触发rdb存储 save 900 1 #900s改变1个key触发rdb存储 rdbcompression no #rdb压缩最好关闭,影响cpu 10.3 设置开启或者关闭rdb存储 提示:默认情况下rdb持久化存储是开启的 redis-cli config set save "" #关闭rdb存储 redis-cli config rewrite #配置保存 redis-cli config set save "180 1 120 10 60 10000" #开启rdb redis-cli config

Redis 持久化

限于喜欢 提交于 2020-02-13 00:30:13
Redis的强劲性能很大程度上是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,例如: (1) 将Redis作为数据库使用(存储历史数据)。 (2) 将Redis作为缓存服务器使用,如果缓存被穿透后会对性能造成很大影响,所有缓存同时失效会导致缓存雪崩,从而使服务器无法响应。 这时,我们希望Redis能将数据从内存中以某种方式同步到硬盘中,当服务器重启后可以根据硬盘中的记录恢复数据,这一过程就是持久化。 写操作的流程 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程。 1.客户端向服务端发送写操作(数据在客户端的内存中) 2.数据库服务端接收到写请求的数据(数据在服务端的内存中) 3.服务端调用write(2) 这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中) 4.操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中) 5.磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上) 写操作大致有上面5个流程,下面我们结合上面的5个流程看一下各种级别的故障。 •当数据库系统故障时,这时候系统内核还是OK的,那么此时只要我们执行完了第3步,那么数据就是安全的,因为后续操作系统会来完成后面几步,保证数据最终会落到磁盘上。 •当系统断电,这时候上面5项中提到的所有缓存都会失效,并且数据库和操作系统都会停止工作

5-Redis 的持久化之 RDB

孤者浪人 提交于 2020-02-12 21:14:02
2016-12-22 13:58:48 该系列文章链接 NoSQL 数据库简介 Redis的安装及及一些杂项基础知识 Redis 的常用五大数据类型(key,string,hash,list,set,zset) Redis 配置文件介绍 Redis 持久化之RDB Redis 持久化之AOF Redis 主从复制 Redis 事务 Redis 发布与订阅 Redis jdedis 介绍 redis 作为缓存的优秀数据库,也提供了将缓存中的数据写入到硬盘的手段。 有两种:一种是 RDB,另一种则是 AOF,本篇文章介绍 RDB。 1.RDB 简介 RDB:redis database 定义:在指定的时间间隔内将内存中的数据集快照写入到硬盘中,也就是 snapshot 快照,它恢复时是将快照文件直接读取到内存中 2.RDB 持久化过程 简单来说,就是 redis 会单独创建(fork)一个子进程来进行持久化,先将数据写入到硬盘中的一个临时文件中,等到持久化过程结束,就用这个临时文件替换上次持久化好的文件。 整个过程中,主进程不进行任何与之相关的IO操作,这就确保了 redis 的极高性能 那么:什么叫 fork? redis 会复制一个与当前进程一样的进程。新进程的所有数据(eg:程序计数器)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程 3.RDB 在 redis

六、RDB 持久化

妖精的绣舞 提交于 2020-02-12 21:11:53
Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。   由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失。   为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。Redis 支持两种形式的持久化,一种是RDB快照(snapshotting),另外一种是AOF(append-only-file)。本篇博客先对 RDB 快照进行介绍。 回到顶部 1、RDB 简介   RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 回到顶部 2、触发方式   RDB 有两种触发方式

Redis系列(三):Redis的持久化机制(RDB、AOF)

拜拜、爱过 提交于 2020-02-12 16:26:40
原文: Redis系列(三):Redis的持久化机制(RDB、AOF) 本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF。 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 。 Redis系列(二):Redis的5种数据结构及其常用命令 1. 为什么需要持久化? 因为Redis是内存数据库,它将自己的数据存储在内存里面,一旦Redis服务器进程退出或者运行Redis服务器的计算机停机,Redis服务器中的数据就会丢失。 为了避免数据丢失,所以Redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在Redis服务器进程退出或者运行Redis服务器的计算机停机导致数据丢失时,快速的恢复之前Redis存储在内存中的数据。 Redis提供了2种持久化方式,分别为: RDB持久化 AOF持久化 接下来,我们一一详解。 2. RDB持久化 RDB持久化是将某个时间点上Redis中的数据保存到一个RDB文件中,如下所示: 基于RDB持久化的上述性质,所以RDB持久化也叫做快照持久化。 该文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时Redis中的数据,如下所示: 2.1 创建RDB文件 Redis提供了2个命令来创建RDB文件,一个是SAVE,另一个是BGSAVE。

缓存技术-Redis

时光毁灭记忆、已成空白 提交于 2020-02-12 12:29:58
1. Redis的了解 1.1 NoSQL 答:NoSQL(Not Only SQL),泛指非关系型的数据库,目的是解决高并发、高拓展和大数据储存问题。细分为:键值型(Redis),列存储(HBase),文档型(MongoDB),图形(Neo4j)。 1.2 Redis 答:Redis(Remote Dictionary Server远程字典服务)是一款 高性能、高并发 的key-value型分布式内存数据库,基于内存运行且支持 持久化 的NoSQL数据库。常被用于缓存和消息队列。 高性能:用户第一次访问数据后,数据存储在缓存中,之后再访问直接从缓存中获得,相当于直接操作内存。数据库数据改变后,同步改变缓存数据。 高并发:直接操作缓存能承受的请求远大于直接访问数据库,将部分数据放在33 redis中,让用户请求直接到缓存中寻找,不用访问数据库。 1.3 Redis和map区别 答:缓存分为本地缓存和分布式缓存。map是本地缓存,优点是轻量快速,缺点是多实例情况下,每个实例都有一个缓存。Redis是分布式缓存,多实例情况下,每个实例共用一个缓存,具有一致性,缺点是架构复杂。 1.4 Redis和memcached区别 答:主要是四点: Redis有更丰富的类型,memcached只支持String类型; Redis支持数据持久化,将内存数据保存到磁盘,memcached全部存在内存;

Redis系列(三):Redis的持久化机制(RDB、AOF)

北城余情 提交于 2020-02-12 08:38:33
本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF。 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 。 Redis系列(二):Redis的5种数据结构及其常用命令 1. 为什么需要持久化? 因为Redis是内存数据库,它将自己的数据存储在内存里面,一旦Redis服务器进程退出或者运行Redis服务器的计算机停机,Redis服务器中的数据就会丢失。 为了避免数据丢失,所以Redis提供了持久化机制,将存储在内存中的数据保存到磁盘中,用于在Redis服务器进程退出或者运行Redis服务器的计算机停机导致数据丢失时,快速的恢复之前Redis存储在内存中的数据。 Redis提供了2种持久化方式,分别为: RDB持久化 AOF持久化 接下来,我们一一详解。 2. RDB持久化 RDB持久化是将某个时间点上Redis中的数据保存到一个RDB文件中,如下所示: 基于RDB持久化的上述性质,所以RDB持久化也叫做快照持久化。 该文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时Redis中的数据,如下所示: 2.1 创建RDB文件 Redis提供了2个命令来创建RDB文件,一个是SAVE,另一个是BGSAVE。 SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间

java十年技术栈[总结复习用]

让人想犯罪 __ 提交于 2020-02-12 05:09:23
以下摘自http://www.tvtv223.com/so/8/default/8.html#36-数据库的分库分表mycat java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式

java技术栈

為{幸葍}努か 提交于 2020-02-12 04:52:07
java技术栈 参考了众多资料,这里就不再详细列举了,可以自行去搜索 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5 java内存模型以及垃圾回收算法