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

一、架构分类

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消息 缺点就是因为分片,所以会导致一些操作不支持,比如:批量的操作,事务性操作等。

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

mysql中like用法

like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

mysql中时间比较的实现

MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0