redis总结(一)的持久化的取舍和选择以及作用
1.redis持久化
在客户端发布save的过程中有可能造成阻塞,如一千万条数据同时保存并生成二进制RDB文件的时候,此时就会延迟堵塞。
文件策略是如果存在老的RDB文件,会用新的文件替代老的文件如下图所示:
对于bgsave而言,它会利用linux中的fork()函数生成一个redis的子进程(fast的意思是相对来说速度比较快,但是当量大的时候依旧有可能阻塞主线程),然后再生成RDB文件,并且将成功生成的消息(bgsave successfully)返回告诉主进程,并响应客户端如下图所示:
5.save与bgsave的对比:所说的阻塞对比当量小的时候几乎没区别
6.若客户端不发布save的命令,redis也可以进行保存的操作配置。不论是60秒发布10000条,还是300秒发布10条,还是900秒发布一条信息都会进行更新保存并生成RDB文件。利用的就是bgsave来保存生成,(但是这种操作也有不合适的弊端,就是文件写入过于频繁,60秒就需要更新10000条)
对于生成的RDB文件一般用dump.rdb的格式来保存。
最佳配置:
:当保存出错时是否停止写入
:是否要压缩文件,rdb文件会在主从之间进行拷贝,采用压缩的形式可以加快拷贝速度
:是否对rdb文件进行校验检验
· :文件名一般用端口号来区分
:一般情况下不选用根目录来保存,而是选择大的硬盘路径来保存
总结RDB:
1耗性能,耗时(对所有数据进行dump,其次写会消耗很多的cpu和内存(IO性能),是个on的过程(copy-on-write策略))
2不可控,丢失数据(定时保存或多或少会丢失一部分数据)
AOF:
AOF的三种策略:always,everysec,no
always:写的命令会进入到缓存区中,每条命令fsync到硬盘中生成AOF文件
everysec:写的命令会进入到缓存区中,每秒都会刷新fsync到硬盘中生成AOF文件(出现故障的时候有可能会丢失一秒的数据)
no:写的命令会进入到缓存区中,会根据不同的系统来选择写入还是不写入,不需要人为考虑,系统自动判断
一般情况下根据各方面权衡会默认选择使用everysec的方案
7.当高并发或者时间推移日志文件会变得冗余,很消耗内存,此时可以选择使用AOF重写,AOF重写可以减少硬盘的占用量,加速恢复速度,
AOF重写的两种实现方式:
1.bgrewriteaof:和bgsave类似
2.AOF重写配置
配置:no-appendfsync-on-rewrite :是否关闭重写
。。。。perscentage 100:表示增长率
RDB和AOF的取舍:
RDB:集中管理可以一次性写入大量,但不要太频繁,因为对机器内存cpu等影响比较大,
AOF:建议一直开着,也体现出redis持久化的特点,等到一定时间可以关闭,毕竟开缓存也需要一定的开销
集中管理利用fork(),但是也有可能出现内存爆满的情况
RDB:集中管理可以一次性写入大量,但不要太频繁,因为对机器内存cpu等影响比较大,
最佳策略:小分片:利用redis进行内存分配,每个内存分配最大4G,当然cpu的消耗也比较大
redis总结(一)的持久化的取舍和选择以及作用的更多相关文章
- Redis 入门到分布式 (五) Redis持久化的取舍和选择
个人博客网:https://wushaopei.github.io/ (你想要这里多有) Redis持久化的取舍和选择 持久化的作用 RDB AOF RDB和AOF的选择 一.持久化的作用 ...
- Redis系列三之持久化
一.Redis持久化 Redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. redis提供了不同级别的持久化方法: Snapshotting(快照,默认方式 ...
- Redis教程(十):持久化详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/137.html 一.Redis提供了哪些持久化机制: 1). RDB持久化 ...
- Redis解决强制关闭Redis快照导致不能持久化错误
今天在使用composer添加Redis缓存的时候,运行Redis发生错误: 127.0.0.1:6379> set dachou dadachou (error) MISCONF Redis ...
- Redis的两种持久化方式-快照持久化和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...
- Docker下redis的主从、持久化配置
Docker下redis的主从.持久化配置 redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member: ...
- 第一章· Redis入门部署及持久化介绍
Redis简介 Redis安装部署 Redis持久化 Redis简介 软件说明: Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. ...
- Spring+Redis集成+关系型数据库持久化
本篇文章主要介绍了"Spring+Redis集成+关系型数据库持久化",主要涉及到Spring+Redis集成+关系型数据库持久化方面的内容,对于Spring+Redis集成+关系 ...
- Redis学习笔记9--Redis持久化
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式:二是Appen ...
随机推荐
- HTML5外包团队 更新一下2019最新案例
本项目控件均为动态加载,3D部分使用Unity3D,其它基于ReactJS,NodeJS,部分使用cocos2D,由于项目涉密,只能发部分截图,欢迎联系索取更多案例,企鹅号 372900288 祝大家 ...
- 近期wxss总结
最近有一些需要点击才能实现的样式切换,我用的方法有2种 1 wxml 中 对class给一个判断式 class="变量?变化后的类:变化前的类" 这样在js中设一个变量,我是设成布 ...
- B/S架构
B/S架构即浏览器和服务器架构模式.它是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构.在这种架构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser ...
- Hadoop分布式文件系统HDFS的工作原理
Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...
- Linux重要命令总结
tar命令后面最常跟的参数 -zxvf 是什么意思? z 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压 x 从 tar 包中把文件提取出来,单词extract的含义是 ...
- git pull更新错误解决办法
Your local changes to the following files would be overwritten by mergeerror: Your local changes to ...
- canal demo搭建全记录
一.环境介绍 canal是阿里开源的中间件,主要用于同步mysql数据库变更.具体参见:https://github.com/alibaba/canal/releases 搭建环境: vmware c ...
- 【macOS】 在OpenCV下训练Haar特征分类器
本教程基于以下环境 macOS 10.12.6,OpenCV 3.3.0,python 3.6.由于网上基于masOS系统的教程太少,想出一篇相关教程造福大家-本文旨在学习如何在opencv中基于ha ...
- vue实现动态异步组件
https://segmentfault.com/a/1190000015080442 https://www.jianshu.com/p/40a364b5e964 <component :is ...
- git--编写好代码文件后更新到git仓库流程
先说一下git仓库分类: Git分为三大部分存储区域1:工作区域(就是你打开编辑器的本地代码仓库)2:提交缓存区域(使用git add 命令暂时放置的区域)3:git远程仓库(使用git push命令 ...