redis php方案,Redis三种部署方案图文详解

3883cf971e0f671e74419f05b406c8c3.png

standaloan(单机模式)

standaloan 是redis单机模式,及所有服务连接一台redis服务,该模式不适用生产。如果发生宕机,内存爆炸,就可能导致所有连接改redis的服务发生缓存失效引起雪崩。(推荐:redis视频教程)

ssentinel(哨兵模式)

redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行切换

db4317c8ca8448a6ce0595fc970b33da.png

sentinel哨兵如下功能实现

(1)monitoring:监控redis是否正常运行

(2)notification:通知application错误信息

(3)failover:当某个master死掉,选择另外一个slave升级为master,更 新master-slave关系。

(4)configurationprovider:client通过sentinel获取redis地址,并在failover时更新地址

2、sentinels and slaves autodiscovery(redis2.8及以上)

配置文件中只配置master地址,slave地址和sentinel地址可以自动发现。

(1)sentinels——sentinel之间通过redis pub/sub交换信息获得。

(2)slaves——询问master获得。

3、sdown、odown、failover

故障检测一般都是通过ping-pong机制,sentinel引入sdown(主观下线)和odown(客观下线)机制,目的应该是在集群规模较大时,检测更客观

(1)sdwon——is-master-down-after-milliseconds(可配置)时间内ping-pong失败。sdown的slave不能升级为master。

(2)odown——超过一定数目(可配置)的sentinel认为sdown,odown只针对master。

(3)failover——多数sentinel认为odown。

redis-cluster(集群模式)

redis集群模式,同样可以实现redis高可用部署,Redis Sentinel集群模式中,随着业务量和数据量增,到性能达到redis单节点瓶颈,垂直扩容受机器限制,水平扩容涉及对应用的影响以及数据迁移中数据丢失风险。针对这些痛点

Redis3.0推出cluster分布式集群方案,当遇到单节点内存,并发,流量瓶颈是,采用cluster方案实现负载均衡,cluster方案主要解决分片问题,即把整个数据按照规则分成多个子集存储在多个不同几点上,每个节点负责自己整个数据的一部分。

Redis Cluster采用哈希分区规则中的虚拟槽分区。虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把所有的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。Redis Cluster槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。

采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,每个节点负责一定数量的槽。Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383。每一个实节点负责维护一部分槽以及槽所映射的键值数据。下图展现一个五个节点构成的集群,每个节点平均大约负责3276个槽,以及通过计算公式映射到对应节点的对应槽的过程。

341ab35d10855610a5ec958fca96100b.pngredis-cluster架构图

c08555ddb08807c75c0cdfcef744ad6f.png

更多redis知识请关注redis入门教程栏目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS遇上Python】Python版的ArcGIS栅格计算器模板

python编写的栅格计算器,用于批处理。 import arcpy from arcpy.sa import * arcpy.CheckOutExtension("spatial") arcpy.gp.overwriteOutput1#custom arcpy.env.workspace"G:\\Phenology of 30 Years\\GIMMS 3g\\15Length\\1Length\\" #custo…

抛开flash,自己开发实现C++ RTMP直播流播放器

众所周知,RTMP是以flash为客户端播放器的直播协议,主要应用在B/S形式的场景中。本人研究并用C开发实现了RTMP直播流协议的播放器,结合之前做的RTMP直播采集端,可以将RTMP协议完全扩展到C/S形式的应用场景中,这将对之后…

python用户输入若干个分数_编写一个程序,要求用户输入五个测试分数。与字母grad对应...

Determine_grade-接受单个数字作为参数,并根据以下评分标准显示分数的字母等级:Score 90-100 80-89 70-79 60-69 Below 60Letter Grade ABCDFcalc_average-以分数列表作为参数,显示分数的平均值,以及与该平均值相等的字母分数。ma…

.NET 程序读取当前目录避坑指南

前些天有 AgileConfig 的用户反映,如果把 AgileConfig 部署成 Windows 服务程序会启动失败。我看了一下日志,发现根目录被定位到了 C:\Windows\System32 下,那么读取 appsettings.json 配置文件自然就失败了。var builder new Configuration…

linux之sed命令

1 sed命令(stream edit) 我们一般用来替换文件内容 2 常用方法 1)、比如一般用sed命令替换文件内容,这里参数-i的意思是操作后直接保存在file里面去了 sed -i s/pattern/replace_str/ file 比如我们把sed.txt文件里面的chenyu替换成chen cat sed.txt chenyu ch…

Liststring[] 如何去重

List<string[]> 如何去重&#xff0c;代码如下: static void Main(string[] args){List<string[]> list new List<string[]>();list.Add(new string[] { "1", "2", "3" });list.Add(new string[] { "1" });list.Ad…

sql create,not null 简单用法(mysql)

sql中CREATE用于创建&#xff0c;一般所说的CREATE DATABASE dbname就是创建数据库&#xff0c;那么dbname我们换成我们所要创建的数据库名称即可。 例如创建一个test数据库&#xff1a; CREATE DATABASE test 创建一个表&#xff1a; CREATE TABLE TableName ( 数据库列…

【译】《Understanding ECMAScript6》- 第三章-Object

目录 Object分类Object字面量扩展Object.assign()重复属性改变原型super引用方法总结ES6针对Object的改进&#xff0c;旨在使JavaScript语言更加接近“万物皆对象”的理念。随着越来越多地使用Object类型进行开发&#xff0c;开发者们越来越不满足于Object相对低下的开发效率。…

php邮件发送tp,Thinkphp5 邮件发送Thinkphp发送邮件

在项目的开发中 用户修改密码&#xff0c;需要发送验证码到用户邮箱&#xff0c;在common.php公共文件中加入以下代码&#xff1a;/*** 系统邮件发送函数* param string $tomail 接收邮件者邮箱* param string $name 接收邮件者名称* param string $subject 邮件主题* param st…

数据库面试题目经典大全

1、事务 事务是指一个工作单元&#xff0c;它包含了一组数据操作命令&#xff0c;并且所有的命令作为一个整体一起向系统提交或撤消请求操作&#xff0c;即这组命令要么都执行&#xff0c;要么都不执行。例如&#xff0c;网上购物的交易过程至少包括以下几个步骤的操作&…

物联网离风口还差最关键一环?

物联网智能时代所带来的不仅仅是物物相联的机会&#xff0c;更是会彻底改变用户和企业之间的关系。用户和硬件、用户和服务之间会更紧密联结在一起。众多业内人士纷纷表示&#xff0c;万物互联的前景虽然美好&#xff0c;但缺乏标准已经成为阻碍产业发展的最大瓶颈。 现阶段痛点…

python创建不可变集合_python不可变集合是什么

在很多的其他语言中在传递参数的时候允许程序员选择值传递还是引用传递(比如c语言加上*号传递指针就是引用传递&#xff0c;而直接传递变量名就是值传递)&#xff0c;而python只允许使用引用传递&#xff0c;但是它加上了可变类型和不可变类型&#xff0c;让我们感觉有点混乱了…

前端大屏模板分享-可在线浏览

1. 前言站长以前介绍过这个开源项目&#xff0c;最近又有人在问&#xff0c;索性挂在Dotnet9网站上&#xff0c;方便大家在线浏览&#xff0c;先声明&#xff0c;模板来自下面的仓库&#xff1a;仓库名&#xff1a;大屏数据展示模板作者&#xff1a;lvyeyou开源协议&#xff1a…

linux shell之awk

1 awk awk 是一款设计用于数据流的工具&#xff0c; awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处 awk 脚本的结构基本如下所示: awk BEGIN{print "start" } pattern { commands } END{ print "end" } file awk 脚本通常由3部分组成…

微软的最高市值是多少?

有人说微软1999 年 12 一个月股价达到历史新高 $58.38不准确。我1999年12月22可能会增加微软。公司按照1999年12月27最新价格格&#xff08;119.125&#xff0c;股票分割后成为59.5625&#xff09;他给了我一个选项。价格格&#xff0c;微软股价史无前例的成为了最高点&#xf…

使用Scala实现Java项目的单词计数:串行及Actor版本

其实我想找一门“具有Python的简洁写法和融合Java平台的优势&#xff0c; 同时又足够有挑战性和灵活性”的编程语言。 Scala 就是一个不错的选择。 Scala 有很多语言特性&#xff0c; 建议先掌握基础常用的&#xff1a; 变量、控制结构 、正则与模式匹配、集合、文件读写/目录遍…

vnc oracle solaris,在Solaris下安装VNC 远程安装Oracle

最近在折腾oracle ebs的安装 &#xff0c;用xmanager连接solairs10的过程中&#xff0c;总是连接3个小时左右就挂掉&#xff0c;很郁闷&#xff01;本文参考eygle的文章1&#xff1b;首先从 eygle提供的网址上下载vnc软件下载得到的文件如下 vnc-3.3.4-solaris_2.5.tar.tar然…

sql CHECK ,UNIQUE 约束(mysql)

check 用来限定值的范围&#xff0c;如下表&#xff1a; CREATE TABLE test22 ( age INT(10), sex VARCHAR(10), name11 VARCHAR(10) NOT NULL, CHECK (age>0) ) 在此&#xff0c;check限制了age的值为0以上 如果想让age的的不唯一呢&#xff1f;那就使用UNIQUE了&…

html+css常用小笔记(持续更新)

1去掉input点击时的蓝色边框outline:none; 2禁止文本选中-webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Chrome/Safari/Opera */ -khtml-user-select: none; /* Konqueror */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /…

音视频基本概念和FFmpeg的简单入门

写在前面最近正好有音视频编辑的需求&#xff0c;虽然之前粗略的了解过FFmpeg不过肯定是不够用的&#xff0c;借此重新学习下&#xff1b;基本概念容器/文件(Conainer/File)&#xff1a;即特定格式的多媒体文件&#xff0c;一般来说一个视频文件是由视频&#xff0c;音频&#…