redis(5)持久化
一、持久化
计算机的数据有两种状态:
1)持久态:如硬盘上的数据
2)瞬时态:如内存当中的数据
持久化就是将瞬时数据转换为持久数据的一个过程,但注意持久化并不意味的数据永远存在,针对不同的持久化,数据的生命周期也是不同的。比如,一次session会话中session容器中的的持久化,如果容器销毁该生命周期也就结束。
二、redis的持久化策略
redis是一个基于内存的数据库,但它也提供了持久化策略,分为两种:
1)RDB
2)AOF
redis默认采用rdb策略,你可以选择使用其中一种,也可以两种同时使用。如果两者同时使用的化,需要注意避免同时比较耗资源的I/O操作,不过一般上使用一种即可,或者使用默认策略。
RDB策略:
简单来说,它就是采用定时生成快照的方式(rdb格式文件),比如:每小时保存一次,每天保存一次。这种策略非常方便地用来做数据备份。根据你的备份数据,你可以简单的把redis还原到任何你备份的版本。
AOF策略:
AOF于RBD不同,它并不存储数据,而是将命令写入到日志当中,在系统重启的时候,通过重新执行日志中的命令构建数据。
三、RDB/AOF优缺点
RDB优点:
1)由于RDB将数据持久化,你可以在遇到问题时候轻松地恢复数据
2)RDB的持久化是通过启动一个子线程来执行I/O的,不会阻塞当前线程。
3)在redis重启的时候,如果数据较大,采用rdb方式比较快速。
RDB缺点:
1)由于定时策略,那么如果redis遇到问题,很有可能丢失最新的数据。由于RDB数据都集中在一个文件,如果文件损坏,那么数据损失几乎是灾难性的。
2)RDB会启动一个线程去持久化数据,但是如果数据量很大,那么可能会由于如超时,CPU性能不足等问题出现停止执行的情况。虽然这点上AOF也是启动一个线程去处理,但是你可以调整日志的写入频率来缓解这种问题。
AOF优点:
1)AOF策略相对更加的耐用,你可以配置不同的持久化形式比如:每秒一次、每次key变化、或完全不持久化。其实即使每秒一次,它的性能也是很不错的,并且你最多只会丢失一秒钟的数据。
2)AOF是采用附加到日志的方式,所以它不会出现如断电导致数据损坏的情况。即使在写入日志的过程中断电,也可以轻易地通过redis-check-aof工具来解决。
3)如果日志文件越来越大,redis会自动生成新的文件,然后切换并写入到新的文件当中。
4)日志文件的格式是非常简单易懂的,你甚至可以停止redis更改日志中的命令,然后再重新启动。
AOF的缺点:
1)相同的数据集,AOF所占用的空间明显大于RDB文件。
2)AOF写入频繁,I/O的频率对于RDB来说更高,性能上自然会略低。
3)有一些特定的命令会导致AOF出现问题,当然redis不断的迭代会相应的解决一些问题。但RDB明显不会出现这些问题。
四、如何使用
1)快照
你可以在redis.conf配置快照的生成策略,如:
save 60 1000
60秒如果有1000个key发生变化。如果要关闭快照,可以注释掉该配置
RDB执行过程:启动一个子线程去生成RDB临时文件,这个临时文件生成完毕以后会替换旧的文件。
2)Append-only file
你只需要在redis.conf中将它开启即可(修改为yes)
appendonly yes
你也可以配置日志写入频率:
1)always 每当有变化
2) seconds 每秒钟
3) no 不写入
AOF执行过程:子线程去重写一个临时文件,当重写完毕,父线程会把缓冲区的新命令写入到临时文件的尾巴,然后替换旧的文件。(这里注意,在子线程重写的过程中,父线程会将新命令写入缓冲区、也会写入旧文件,这样即使子线程重写失败,旧文件依然完整)
五、备份恢复
无论采用RDB策略还是AOF策略,最终都会生成文件本地文件,而备份和恢复其实就是将完整的本地文件进行备份,通过加载备份文件来恢复数据。
redis(5)持久化的更多相关文章
- Redis总结(四)Redis 的持久化
前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化. redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来 ...
- Redis的持久化的两种方式drbd以及aof日志方式
redis的持久化配置: 主要包括两种方式:1.快照 2 日志 来看一下redis的rdb的配置选项和它的工作原理: save 900 1 // 表示的是900s内,有1条写入,则产生快照 save ...
- redis启用持久化
redis的持久化有rdb和aof两种. rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开redis ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- Redis笔记(八)Redis的持久化
Redis相比Memcached的很大一个优势是支持数据的持久化, 通常持久化的场景一个是做数据库使用,另一个是Redis在做缓存服务器时,防止缓存失效. Redis的持久化主要有快照Snapshot ...
- 深入剖析 redis AOF 持久化策略
本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制.redis 主要在 aof.c 中实现 AOF 的操作. 数据结构 rio redis AOF 持久化同样借助了 struct ...
- 深入剖析 redis RDB 持久化策略
简介 redis 持久化 RDB.AOF redis 提供两种持久化方式:RDB 和 AOF.redis 允许两者结合,也允许两者同时关闭. RDB 可以定时备份内存中的数据集.服务器启动的时候,可以 ...
- redis 数据持久化
1.快照(snapshots) 缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb.你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据 ...
- redis的持久化之AOF
AOF Redis 分别提供了 RDB 和 AOF 两种持久化机制: RDB 将数据库的快照(snapshot)以二进制的方式保存到磁盘中. AOF 则以协议文本的方式,将所有对数据库进行过写入的命令 ...
- redis的持久化方式RDB和AOF的区别
1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...
随机推荐
- vue.js 知识点(二)
关于vue看到有很多的知识点和react有很多相近的地方,比如说路由还有一些简单的运用,但是又有一些不同,比如格式.还有写法的一些不同! 所以在这里我总结一下关于vue 关于路由的一些运用: 路由: ...
- 解决方法:配置群集时# gem install redis 报错:Unable to require openssl, install OpenSSL and rebuild ruby
问题:前面已经在/usr/local/src安装了ruby-2.3.0.tar.gz.rubygems-2.4.2.tar.gz.在配置 redis-3.1.1 群集中,使用gem install 安 ...
- The server of Nginx(三)——Nginx企业级优化
相信看过我之前apache文章的朋友们,对服务优化也有了一个大概的了解,相比较而言,Nginx企业中应用的更多一些,因此今天也会详细阐述Nginx的优化,有人说,服务器不需要优化,开虚拟化,分分钟成倍 ...
- this指向的一个小总结
凡是在函数内部调用的函数的this的指向都是window 定时器,延时器this的指向都是window 在事件中一般情况下this的指向都指向当前的DOM对象 在对象函数中this的指向一般情况下都指 ...
- 谷歌支付服务端详细讲解(PHP)
前不久公司拓展海外市场,要接入google支付.刚开始一头雾水,相关的文档实在太少.而且很多东西都需要FQ,不过好在摸索几天后,总算调试通了. 前提:FQ 1.注册账号google账号 https:/ ...
- Aizu-1378- ICPC Asia 2017-Secret of Chocolate Poles
Secret of Chocolate Poles Time Limit : 1 sec, Memory Limit : 262144 KB Problem A Secret of Chocolate ...
- 启用mysql日志记录执行过的sql
在mysql命令行或者客户端管理工具中执行:SHOW VARIABLES LIKE "general_log%"; 结果: general_log OFF general_log_ ...
- django 迁移工程数据库无法创建的问题
1.今天我遇到一个问题在此做笔记记下来 2.我晚上一般是在家练习的,白天会拷贝工程到公司用 3.因为我在家里创建过一次数据库了,通过命令创建,但是无论我怎么修改models都无法创建表,最后只能通过新 ...
- appium关于当前网络情况测试,实现打开关闭网络(python3.4版)
appium关于当前网络情况测试,实现打开关闭网络(不需要root测试机) # python from appium.webdriver.connectiontype import Connectio ...
- jsp基础知识总结
1.了解jsp,jsp有什么有利的,有什么弊端. jsp是serlet的扩展,在web应用中,每个jsp页面都会有servlet容器生产对应的servlet. jsp通过在标准的html页面中插入ja ...