redis缓存集群简单介绍

数据部
• 阅读 1190

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【redis缓存集群简单介绍】

【修真院java小课堂】redis缓存集群简单介绍

 

大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员。

今天给大家分享一下,redis缓存集群简单介绍。

 

1.背景介绍

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。

Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施。把多个redis实例整合在一起,形成一个集群,也就是将数据分散到集群的多台机器上。当数据量过大一个主机放不下的时候,就需要对数据进行分区,将key按照一定的规则进行计算,并将key对应的value分配到指定的Redis实例上,这样的模式简称Redis集群。
 

 

2.知识剖析

redis三种缓存策略-主从复制

在主从复制中,数据库分为俩类,主数据库(master)和从数据库(slave)。主数据库可以进行读写操作,当读写操作导致数据变化时会自动将数据同步给从数据库。从数据库一般都是只读的,并且结束主数据库同步过来的数据。一个master可以拥有多个slave,但是一个slave只能对应一个master。

当slave启动后,主动向master发送SYNC命令。master接收到SYNC命令后在后台保存快照(RDB持久化)和缓存保存快照这段时间的命令,然后将保存的快照文件和缓存的命令发送给slave。slave接收到快照文件和命令后加载快照文件和缓存的执行命令。复制初始化后,master每次接收到的写命令都会同步发送给slave,保证主从数据一致性。
  

redis三种缓存策略-哨兵

哨兵的作用是监控 redis系统的运行状况,功能有:监控主从数据库是否正常运行 、master出现故障时,自动将slave转化为master、多哨兵配置的时候,哨兵之间也会自动监控以及多个哨兵可以监控同一个redis

由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
 

redis三种缓存策略-集群

Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位。Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令。Redis 集群中不存在中心(central)节点或者代理(proxy)节点

总结下来,就是redis支持的cluster特性有:节点自动发现,在线分片,集群容错,基于配置的集群管理

 

3.常见问题

1)redis集群的具体搭建
 

4.编码实战

5.扩展思考

redis集群分片机制。

Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。一个 Redis 集群包含 16384 个哈希槽(hash slot), 数据库中的每个键都属于这 16384 个哈希槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中CRC16(key) 语句用于计算键 key 的 CRC16 校验和。每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。

 

什么时候整个集群不可用

1)如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败。
2)如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

 

6.参考文献

https://blog.csdn.net/q649381...

https://blog.csdn.net/yinbuch...

http://www.cnblogs.com/gossip...

 

7.更多讨论

1)redis和mongoDB的区别

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单.适合较小数据量的性能和运算。

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活,海量数据的访问效率提升。

 

2)redis支持事务么?

支持事务,命令要不全部执行,要不不执行,但是,仅能能保证事务中的操作按顺序执行。

 

3)redis集群有核心节点吗?

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

点赞
收藏
评论区
推荐文章
亚瑟 亚瑟
4年前
php操作redis哨兵模式,主从切换后自动获取master
本文将介绍如何使用PHP来连接redis哨兵模式。哨兵模式:大概的原理就是监听redis主库心跳包,如果心跳断开,则枚举一个从库推举成为新的主库,防止redis宕机不能使用。为了增强redis的性能,防止其挂掉,引用redis哨兵监控redis集群是个不错的选择。下面三步简单记录php连接redis哨兵。第一步、获取哨兵模式连接redis句柄对象/
Peter20 Peter20
4年前
Redis集群详解
Redis集群详解Redis有三种集群模式,分别是:主从模式Sentinel模式Cluster模式三种集群模式各有特点,关于Redis介绍可以参考这里:Redis官网:https://redis.io/,最新版本5.0.4主从模式主从模式介绍主从模式是三种模式中最简单的,在主从复制中,数据库分为两类:主数据库(master)和从数据库(sl
Stella981 Stella981
3年前
Redis migrate 数据迁移工具
在工作中可能会遇到单点Redis向Redis集群迁移数据的问题,但又不能老麻烦运维来做。为了方便研发自己迁移数据,我这里写了一个简单的Redis迁移工具,希望对有需要的人有用。本工具支持:单点Redis到单点Redis迁移单点Redis到Redis集群迁移Redis集群到Redis集群迁移Redis集群
Wesley13 Wesley13
3年前
ThinkPHP扩展,实现Redis的CURD操作。
接下为将以ThinkPHP作为MVC开发框架,详细介绍Redis的CURD操作。需要说明的是,在ThinkPHP中本身并不支持Redis开发环境,只支持使用Redis开发简单的数据缓存功能。所以我们必须要通过扩展功能,实现Redis的编程支持。为了方便读者学习,笔者临时开发了相应的模块扩展及数据库扩展。下载址为http://beautysoft.
Stella981 Stella981
3年前
DevOps的支撑服务:K8s容器管理与应用部署
本文为云计算架构设计群的微课堂原创分享,转载需注明出处:EAII企业架构创新研究院。如需加入微信群参与微课堂、架构设计与讨论直播请直接回复此公众号:“加群姓名公司职位微信号”。大家好,本期微课堂介绍在新一代数字化企业云平台中对于Kubernetes的学习以及使用的总结。
Stella981 Stella981
3年前
Redis5.0:简单的集群模式——主从模式详解
主从模式主从模式是最简单的集群模式,其实就是复制基本只能解决读写分离问题,主机服务器一旦宕机基本完蛋,不具备高可用。基本上redis的性能瓶颈主要在于网络IO和内存主频上面,单机版Redis在不考虑高可用的情况下基本满足80%的项目需要,因为单机版Redis可以实现10W/S的请求,除非缓存KV值过大,通过读写分离缓存网卡的压
Stella981 Stella981
3年前
Redis 常见 7 种使用场景
Redis常见7种使用场景(PHP实战)Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、KeyValue数据库,并提供多种语言的API。本篇文章,主要介绍利用PHP使用Redis,主要的应用场景。简单字符串缓存实战$redis
Stella981 Stella981
3年前
Redis实战——简单介绍
出自:https://www.cnblogs.com/moonlightL/p/7364107.htmlRedis简单介绍Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序Redis有三个主要特点,使它优越于其它键值数据存储系统1.1)Redis将其数据
Stella981 Stella981
3年前
Redis、MPP、kafka 、MongDB简介
Redis:间值数据库,适合缓存用户Session会话与经常需要查的数据1.Redis集群,为什么在项目中使用集群 1.持久化,持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要左右是数据备份,即将数据存储在硬盘,保证数据不会因进程退出而丢失;2、复制:主从复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用
Stella981 Stella981
3年前
Redis持久化的两种模式
最近呢,我使用到redis的缓存这方面的知识,所以去加深了一下学习,故有一些积累的东西,在这里给大家分享一下;顺便也当作笔记一般的存在,以免以后用到的时候,又去再次查找,难道自己记录的知识,它不香吗?1\.Redis持久化策略1.1什么是持久化1.1.1持久化介绍    
服务端应用多级缓存架构方案 | 京东云技术团队
20w的QPS的场景下,服务端架构应如何设计?常规解决方案可使用分布式缓存来抗,比如redis集群,6主6从,主提供读写,从作为备,不提供读写服务。1台平均抗3w并发,还可以抗住,如果QPS达到100w,通过增加redis集群中的机器数量,可以扩展缓存的容量和并发读写能力。同时,缓存数据对于应用来讲都是共享的,主从架构,实现高可用。