redis服务器有哪些架构?每个架构的优劣是什么?

后端bug开发工程师
• 阅读 411

一、架构分类

1.单主架构:只有一个redis节点,如果这个节点挂了,整个redis服务就不可用,这个不能在生产环境使用,一般是本地开发使用;

2.主从架构:一个master+一个或者多个slaver,从服务器是主服务器的副本,从服务器也可以提供查询服务,从而减轻master的负担,主从架构有两个缺点: (1)因为从服务器和主服务器保存的数据是一样的,所以redis能够存储的数据量受限于单台服务器,不能水平扩展,在业务量不大的时候没有问题,但是在业务量较大的时候是不够的; (2)如果主服务器挂掉了,需要手动把一个从服务器切换成主服务器,可用性收到影响。

3.哨兵:为了解决主从架构master挂掉及时切换的问题引入了哨兵,用来监控redis节点,如果master节点挂掉了,哨兵集群通过raft算法选举出合适的从服务器作为新的主服务器并完成切换,但是同样的哨兵模式没有解决水平扩展的问题;

4.redis cluster:通过把hash(key)分成16384个槽位,让不同的redis节点来负责不同的槽位,从而实现水平扩展;集群的节点之间通过gossip协议进行通信,会把自己负责的槽位通过广播的形式告诉其它的节点,主要有以下四种类型的消息: ping:通过这个消息把自己负责的操作告诉集群其它的节点,同时也维持一个心跳 pong:回复ping消息 fail:如果长时间没有收到某个节点的消息时,就会认为这个节点挂了,如果大多数的节点都认为这个节点挂了,那么就会发起选举,通过raft算法选举出master节点 meet:给新加入集群的节点发送meet消息 缺点就是因为分片,所以会导致一些操作不支持,比如:批量的操作,事务性操作等。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Peter20 Peter20
3年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
后端bug开发工程师
后端bug开发工程师
Lv1
不知何岁月,得与尔同归?
文章
6
粉丝
3
获赞
7