redis知识汇总(部署、高可用、集群)
文章目录
- 一、redis知识汇总
- 什么是redis
- redis的优缺点:
- 为什么要用redis做缓存
- redis为什么这么快
- 什么是持久化
- redis持久化机制是什么?各自优缺点?
- AOF和RDB怎么选择
- redis持久化数据和缓存怎么做扩容
- 什么是事务
- redis事务的概念
- ACID概念
- 主从复制
- redis主从复制原理
- 一、redis部署
- 二、redis高可用
一、redis知识汇总
什么是redis
是开源免费的,高性能的k/v数据库
特点:支持数据的持久化、可以将内存中的数据保存在磁盘中,重启的时候再次加载使用;不仅支持k/v类型的数据,还提供list、set、zset(有序集合)、hash等数据结构的存储
支持数据的备份,也就是master-slave模式的数据备份
redis的优缺点:
优点:
读写性能优异;支持数据持久化、支持AOF、RDB两种持久化方式
支持事务,redis所有操作都是原子性的
数据结构丰富
支持主从复制、可以进行读写分离
缺点:
数据库内存受物理内存的限制,不能作海量数据的高性能读写
不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败
主机宕机,宕机前部分数据未能及时同步到从机,切换ip会引起数据不一致的问题,降低系统可用性
较难支持在线扩容,集群容量达到上限时在线扩容会变得复杂。
为什么要用redis做缓存
主要是因为它的高性能、高并发
高性能:用户第一次访问数据,会从硬盘上读取,但是他会将用户访问过的数据存在缓存中,这样下次用户访问就是从缓存中获取数据,也就是直接操作内存,速度非常快
高并发:直接操作缓存能够承受的请求量是远远大于直接访问数据库的,如mysql,如果请求量过大,可能承受不住。
redis为什么这么快
完全基于内存,绝大部分的请求是直接基于内存操作
数据结构简单,对数据的操作也简单
采用单线程,避免了多线程或者多线程的切换导致的CPU消耗,不用考虑各种锁的问题
采用多路i/o复用模型
什么是持久化
持久化就是把内存的数据写到磁盘中去,防止宕机后内存数据丢失
redis持久化机制是什么?各自优缺点?
持久化机制:
RDB(默认)
AOF
RDB:是默认的持久化方式;每隔一段时间,就把内存中的数据保存到硬盘上的指定文件中。触发RDB的方式有手动触发和被动触发
手动触发对应save和bgsave命令;
优点:只有一个文件dump.rdb,方便做持久化
性能最大化,fork子进程完成写操作,保证io最大化
相对于数据集大时,比AOF启动效率更高
缺点:数据安全性低,因为是没过一段时间进行数据持久化,如果在这个间断发生故障,就会导致数据丢失
AOF:AOF是以日志形式记录每个动作,每次操作都会以二进制命令的形式保存到指定文件中;两种方式同时开启时,数据恢复redis会优先选择AOF恢复
优点:数据安全,通过append模式写文件,即使中途服务器宕机,可以通过redis-check-aof工具解决数据一致性问题
如果不小心使用flushall命令清空所有数据,只要还没执行rewrite,那么就可以将日志文件中的flushall删除,进行恢复
缺点:AOF开启之后支持写的QPS(美妙查询率)会比RDB支持写的QPS低;数据恢复比较慢,不适合做冷备
AOF和RDB怎么选择
结合起来使用,用AOF保证数据不丢失,用RDB做不同程度的冷备,在AOF文件丢失不可用时,可以用RDB快速恢复
redis持久化数据和缓存怎么做扩容
如果redis被当做缓存使用,使用一致性哈希实现动态扩容缩容
如果被当做持久化存储,必须使用固定的keys-to-nodes映射关系,节点数量一旦确定不能变化,否则就要使用redis集群
什么是事务
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
redis事务的概念
Redis 事务的本质是通过MULTI(事物开始)、EXEC(事务执行)、WATCH等一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。总结:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
ACID概念
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性
事务前后数据的完整性必须保持一致。
隔离性
多个事务并发执行时,一个事务的执行不应影响其他事务的执行
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
Redis的事务总是具有ACID中的一致性和隔离性,其他特性是不支持的。当服务器运行在AOF持久化模式 下,并且appendfsync选项的值为always时,事务也具有耐久性。
主从复制
主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为 主节点(master),后者称为 从节点(slave)。且数据的复制是 单向 的,只能由主节点到从节点。Redis 主从复制支持 主从同步 和 从从同步 两种,后者是 Redis 后续版本新增的功能,以减轻主节点的同步负担。
作用:
数据冗余: 主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复: 当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复 (实际上是一种服务的冗余)。
负载均衡: 在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写 Redis 数据时应用连接主节点,读 Redis 数据时应用连接从节点),分担服务器负载。尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。
高可用基石: 除了上述作用以外,主从复制还是哨兵和集群能够实施的 基础,因此说主从复制是 Redis 高可用的基础。
redis主从复制原理
保存主节点(master)信息 这一步只是保存主节点信息,保存主节点的ip和port
主从建立连接 从节点(slave)发现新的主节点后,会尝试和主节点建立网络连接
发送ping命令 连接建立成功后从节点发送ping请求进行首次通信,主要是检测主从之间网络套接字是否可用、主节点当前是否可接受处理命令。
权限验证 如果主节点要求密码验证,从节点必须正确的密码才能通过验证。
同步数据集 主从复制连接正常通信后,主节点会把持有的数据全部发送给从节点。
命令持续复制 接下来主节点会持续地把写命令发送给从节点,保证主从数据一致性
一、redis部署
下载并且编译,将整个目录直接拷贝至另一台主机作为slave端
修改slave端的配置文件,将master ip指向master端,端口6379,就完成了主从复制。redis的主从的配置比较简单。
我们可以看到,在master上查看info,就可以看到slave那里变成了1,也就是现在我们有一个slave端,以及这个slave端的ip、状态等等
二、redis高可用
首先我们需要再加一台slave,配置方法和上边一样;我们使用sentinel来做故障切换,即高可用
完成之后,我们在master端会看到slave数量为2,相关的端口、ip也都会显示;这些是做高可用的基础
首选我们需要在另外一台主机上ssh我们的master,并且shutdown redis,这个时候我们就会在log中看到master端down,并且会选举出新的master端代替原来的master,在我们重新又开启原来master的redis之后,此主机就会成为slave,并且指向新的刚选举出的master上。
相关文章:
![](https://img-blog.csdnimg.cn/3c104788ca8441198a17cf0c11c6337c.png)
redis知识汇总(部署、高可用、集群)
文章目录一、redis知识汇总什么是redisredis的优缺点:为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么?各自优缺点?AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…...
![](https://img-blog.csdnimg.cn/img_convert/66843d72ec86b4dcf161babfd2aab976.png)
【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现
一,前言 上一篇,主要介绍了 Vuex 响应式数据和缓存的实现,主要涉及以下几个点: Vuex 的响应式实现原理;响应式核心方法 resetStoreVM;commit 和 dispatch 的处理; 本篇,继续介绍 …...
![](https://img-blog.csdnimg.cn/47325515693541728df1ff93aa14683f.png)
面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....
前两天,我的一个朋友去大厂面试,跟我聊天时说:输的很彻底… 我问她:什么情况?她说:很后悔这5年来一直都干的是功能测试… 相信许多测试人也跟我朋友一样,从事了软件测试很多年,却依…...
![](https://www.ngui.cc/images/no-images.jpg)
知识图谱 方法、实践与应用 王昊奋 读书笔记(下)
最近读了这本书,在思路上很有启发,对知识图谱有了初步的认识,以下是原书后半部分的内容,可以购买实体书获取更多内容。 知识图谱推理 结合已有规则,推出新的事实,例如持有股份就能控制一家公司࿰…...
![](https://img-blog.csdnimg.cn/04bf1b4f49944e11bcc0aa8ffbcc2845.png)
vue实现打印浏览器页面功能(两种方法)
推荐使用方法二 方法一:通过npm 安装插件 1,安装 npm install vue-print-nb --save 2,引入 安装好以后在main.js文件中引入 import Print from vue-print-nbVue.use(Print); //注册 3,现在就可以使用了 div id"printTest…...
![](https://img-blog.csdnimg.cn/img_convert/142733bbdfe0f660746fa7074324dcb0.png)
【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(Prometheus格式)
VictoriaMetrics单机版支持以Prometheus格式的数据写入,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 2、使用postman插入单机版VictoriaMetrics,以当前时间插入数据 地址为 http://victoriaMetricsIP:8428/api…...
![](https://img-blog.csdnimg.cn/img_convert/5f9573fbdfaf7380ec1c2fc1d36ed6b5.png)
【青训营】分布式定时任务简述
这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天 分布式定时任务简述 定义 定时任务是指系统为了自动完成特定任务,实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台,并且实现集群管理调度和…...
![](https://img-blog.csdnimg.cn/b225d086741b48658083a5e05ad3382a.png)
golang语言本身设计点总结
本文参考 1.golang的内存管理分配 golang的内存分配仿造Google公司的内存分配方法TCmalloc算法;她会把将内存请求分为两类,大对象请求和小对象请求,大对象为>32K的对象。 在了解golang的内存分配之前要知道什么事虚拟内存,虚拟内存是把磁盘作为全局…...
![](https://img-blog.csdnimg.cn/465eb0f461144866b78553e375ab8124.png)
PTA L1-046 整除光棍(详解)
前言:内容包括四大模块:题目,代码实现,大致思路,代码解读 题目: 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被…...
![](https://img-blog.csdnimg.cn/59bd150a208f490a9bae96b7e544abbc.png)
将小程序代码转成uni-app代码
最近因为公司项目原因需要将小程序的项目转换成uni—app的项目,所以总结了以下几点: 首先你可以先到uni-app的官网简单看一下对它的介绍,本次文章的介绍是针对简单的微信小程序来进行的转化。 在这之前我们来看一下目录对比 下面就来介绍一下…...
![](https://i0.hdslb.com/bfs/face/0b535f3a82e731c68ba4148002f121c3128a9662.jpg)
C语言在游戏中播放音乐
使用 mciSendString 播放音乐 mciSendString 支持 mp3、wma、wav、mid 等多种媒体格式,使用非常简单。这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,代码如下: // 编译该范例前,请把 music.mp3 放…...
![](https://img-blog.csdnimg.cn/img_convert/3e49b9596a451fea55e8ed6af5fb3b8c.png)
机器学习算法:随机森林
在经典机器学习中,随机森林一直是一种灵丹妙药类型的模型。 该模型很棒有几个原因: 与许多其他算法相比,需要较少的数据预处理,因此易于设置充当分类或回归模型不太容易过度拟合可以轻松计算特征重要性在本文[1]中,我想…...
![](https://img-blog.csdnimg.cn/img_convert/c6051cbb3ff4c2e7b51a8b2a4067a5d3.png)
如何做好多项目全生命周期的资源调配,提升资源利用效率?【橙子】
随着产品研发中心各团队承接的研发项目数量和规模日趋增加,人均产值和利润目标逐步提升,人均承接的项目数量也逐渐增加,目前缺乏合理的研发资源管理方案,存在多项目研发过程中资源冲突及部分项目研发人员忙闲不均等现象࿰…...
![](https://img-blog.csdnimg.cn/img_convert/718de0977c6e7cdf1e649c4e509ef544.jpeg)
JVM - 内存分配
目录 JVM的简化架构和运行时数据区 JVM的简化架构 运行时数据区 PC寄存器 Java栈 Java堆 方法区 运行时常量池 本地方法栈 栈、堆、方法区交互关系 Java堆内存模型和分配 Java堆内存概述 Java堆的结构 对象的内存布局 对象的访问定位 Trace跟踪和Java堆的参数配…...
![](https://img-blog.csdnimg.cn/b3f5beb7c1174315aa55cb8d22303887.png)
【知识图谱论文】Bi-Link:通过转换器和提示的对比学习桥接来自文本的归纳链接预测
文献题目:Bi-Link: Bridging Inductive Link Predictions from Text via Contrastive Learning of Transformers and Prompts发表期刊:WWW2023代码: https://anonymous.4open.science/r/Bi-Link-2277/. 摘要 归纳知识图的完成需要模型来理解…...
![](https://img-blog.csdnimg.cn/d5682268e7f64b1592957cff52d42562.png)
jieba+wordcloud 词云分析 202302 QCon 议题 TOP 关键词
效果图 步骤 (1)依赖 python 库 pip install jieba wordcloud数据 概览 $ head -n 5 input.txt 中国软件技术发展洞察和趋势预测报告 2023 QCon 大会内容策划思路 FinOps:从概念到落地 开源芯片的发展现状、机遇和未来 乐观者前行࿰…...
![](https://img-blog.csdnimg.cn/img_convert/eca4e2991d15032fadb62557e7318086.png)
包管理工具-npm-npx-yarn-cnpm
代码共享方案 在我们通过模块化的方式将代码划分成一个个小的结构后,在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具,这个工具我们可以让同事通过导入的方式来使用,甚至你可以分享给世界各地的程…...
![](https://img-blog.csdnimg.cn/9ede58dbc57f4851840b715450809732.png)
go gin学习记录1
环境: MAC M1,Go 1.17.2,GoLand 默认执行指令的终端,如果没有特别说明,指的都是goland->Terminal 创建项目 Goland中新建项目,在$GOPATH/src/目录下建立t_gin项目。 进入项目,在goland的T…...
![](https://img-blog.csdnimg.cn/img_convert/f1b9263c56aa4d7a8393e7dc22329a5f.png)
Docker常用命令
1:帮助命令docker versiondocker infodocker --help2:镜像命令docker images(列出本地主机上的镜像)各个选项说明:docker imagesREPOSITORY:表示镜docker images像的仓库源TAG:镜像的标签IMAGE IDÿ…...
![](https://img-blog.csdnimg.cn/6f643863c959403cb06cbac7ad342c92.png)
论文写作——公式编辑器、latex表格、颜色搭配器
1、公式编辑器(网页版mathtype可用于latex公式编辑): MathType demo - For DevelopersLive demonstration about the features of Mathtype which allows edition equations and formulas (PNG, flash, SVG, PDF, EPS), based on MathML and compatible with LaTeX.https:/…...
![](https://img-blog.csdnimg.cn/03cb8a479210419ab2770d16ff70bf22.png)
MySQL数据库12——视图(VIEW)
视图概念 视图是一个虚拟表,称其为虚拟表的原因是:视图内的数据并不属于视图本身,而属于创建视图时用到的基本表。可以认为,视图是一个表中的数据经过某种筛选后的显示方式;或者多个表中的数据经过连接筛选后的显示方…...
![](https://img-blog.csdnimg.cn/154bf42ef23f486cb0875b1a850ef3ef.png)
第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续
编辑 | 宋慧 出品 | CSDN 云计算 2023 年的第二周,英特尔重磅发布其企业级芯片领域重要的产品——第四代英特尔 至强 可扩展处理器。作为数据中心处理器当之无愧的王牌产品,迄今为止,英特尔已经向全球客户交付了超8500万颗至强可扩展处理器…...
![](https://www.ngui.cc/images/no-images.jpg)
c++-运算符函数与运算符重载
目录概述例子注意问题概述 运算符重载是函数一个特殊情况,重载的运算符视为特殊的函数,称为运算符函数。 编译系统能依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义…...
![](https://www.ngui.cc/images/no-images.jpg)
【MySQL Shell】8.9.3 修复 InnoDB ClusterSet 中的成员服务器和集群
根据集群的问题或维护要求,可以使用以下操作来处理其成员服务器。除非另有说明,否则请使用使用 InnoDB Cluster 管理员帐户或服务器配置帐户获取的 Cluster 和 ClusterSet 对象,以便存储在 ClusterSet 对象中的默认用户帐户具有正确的权限。 …...
![](https://img-blog.csdnimg.cn/img_convert/a0fabccf5acdcea4c6790917cd72a6ca.png)
宝塔搭建实战php开源likeadmin通用管理pc端nuxt3源码(三)
大家好啊,我是测评君,欢迎来到web测评。 昨天给大家分享了admin前端的搭建部署方式,今天来给大家分享pc端在本地搭建,与打包发布到宝塔的方法,希望能够帮助到大家,感兴趣的朋友可以自行下载学习。 技术架构…...
![](https://img-blog.csdnimg.cn/img_convert/fedf93a06f52f955e2045444b6cf9504.png)
【C++】---Stack和Queue的用法及其模拟实现
文章目录Stack最小栈栈的弹出压入序列逆波兰表达式求值用栈实现队列模拟实现queue用队列实现栈模拟实现Stack stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。它的使用和之前学习的ve…...
![](https://www.ngui.cc/images/no-images.jpg)
Python GUI编程
Python 提供了多个图形开发界面的库,几个常用 Python GUI 库如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8…...
![](https://img-blog.csdnimg.cn/09e6c309bce749d2961eea3226013c90.jpeg)
2023年浙江水利水电施工安全员精选真题题库及答案
百分百题库提供水利水电施工安全员考试试题、水利水电施工安全员考试预测题、水利水电施工安全员考试真题、水利水电施工安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 119.下列关于大模板按照的说法正确的是&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
Solon2 开发之插件,三、插件体外扩展机制(E-Spi)
插件体外扩展机制,简称:E-Spi。用于解决 fatjar 模式部署时的扩展需求。比如: 把一些“业务模块”做成插件包放到体外把数据源配置文件放到体外,方便后续修改 其中, .properties 或 .yml 文件都会做为扩展配置加载&a…...
![](https://www.ngui.cc/images/no-images.jpg)
数据结构与算法(Java版) | 数据结构与算法的关系
从这一节起,咱们就要开始进入到「第二章——数据结构与算法的介绍」的学习中了,总的来说,第二章要讲解的内容其实也不是特别的多,内容也多偏理论,相信大家学起来是会比较轻松愉快的。 接下来,就请大家跟随…...
![](https://img-blog.csdnimg.cn/13505310c78f4b0b953ae0fc840170a1.jpeg)
网站怎样做链接/微商刚起步怎么找客源
Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大…...
![](https://images2018.cnblogs.com/blog/363274/201807/363274-20180727174427461-488000052.png)
建设网站电脑配置/十大计算机培训学校
讲一个项目常见的功能,友盟统计功能 例如一个项目有很多多modlue,每个里面modlue都有Activity,Activity需要友盟统一,Fragment也需要友盟统计。一般做法就是继承一个BaseActivity,BaseFragment。 然后在BaseActivity,BaseFragment大概是这样的…...
![](https://img-blog.csdnimg.cn/img_convert/8a616ee019b15e421d06f596cfa507a3.gif)
自己开个网站/推广关键词怎么设置
python3--基础综合测试发布时间:2018-04-09 19:20:35编辑:Run阅读(4476)一:选择题1、python不支持的数据类型有A、charB、intC、floatD、list选择:A解释:char类型在python中不存在,它是其他编程语言的一种数…...
![](/images/no-images.jpg)
电脑版 做网站尺寸/最新新闻热点事件2024
USB(Universal Serial BUS,通用串行总线)协议规定,所有的USB设备都有VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码)。VID由供应商向USB-IF&#…...
![](/images/no-images.jpg)
贵阳个人做网站/网站建设平台官网
转自:https://blog.csdn.net/KYJL888/article/details/77846122 a) int a;表示一个内存空间,这个空间用来存放一个整数(int); b) int* a;表示一个内存空间,这个空间用来存放一个指针,这个指针指…...
![](/images/no-images.jpg)
图片展示型网站模板/今日新闻摘抄十条
1.背景图透明化 opacity:0.5; //导致页面上的内容也被透明化 background:rgba(33,33,33,0.5); //透过rgba提供的透明特性则不存在这个问题...