本文目录一览:
高性能高并发网站架构,教你搭建Redis5缓存集群
redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。
Redis集群把所有的数据映射到16384个槽中。每个key会映射为一个固定的槽,只有当节点分配了槽,才能响应和这些槽关联的键命令。通过cluster addslots命令为节点分配槽。
redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换。
玩转Redis的高可用(主从、哨兵、集群)
1、Redis主从复制是指在一个Redis集群中,将一个Redis节点作为主节点,其余的Redis节点作为从节点。主节点负责写入数据,从节点负责读取数据。
2、Redis的哨兵机制就是解决主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。 要使用哨兵机制,除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤。
3、哨兵模式解决了故障不能自动恢复的问题,但仍存在的问题是:Redis较难支持在线扩容,对于集群,容量达到上限时在线 扩容会变得很复杂 。
redis是如何执行的
1、首先为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中。
2、执行命令的过程其实主要是寻找命令对应的执行函数,通过lookupCommand查找对应的执行命令,通过call执行命令。负责执行命令 c-cmd-proc 并更新统计信息,执行完成后负责同步数据 propagate 。
3、Redis 是基于内存的,内存的读写速度非常快,因此 Redis 的单线程执行效率也非常高。Redis 是单线程的,省去了很多上下文切换线程的时间,这也是 Redis 能够快速处理请求的原因之一 。
4、Redis 的执行效率快的原因有以下几点:- Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。
5、AOF 是以appendonly方式进行数据的储存的,开启AOF模式后,所有存进redis内存的数据都会进入os cache中,然后默认1秒执行一次fsync写入追加到appendonly.aof文件中。
6、l 脏数据处理模块,处理失败执行的缓存操作。l 屏蔽监控模块,对于jedis操作的异常监控,当某结点出现异常可控制redis结点的切除等操作。整个分布式模块通过hornetq,来切除异常redis结点。
Redis-Cluster
1、redis-cluster把所有的物理节点映射到[0-16383]个 slot 上,基本上采用平均分配和连续分配的方式。
2、在redis-cluster集群中,每一个主节点可以添加多个从节点,主节点和从节点遵循主从模式的特性。 当用户需要处理更多的读请求时,添加从节点可以扩展系统的读性能。
3、Redis集群把所有的数据映射到16384个槽中。每个key会映射为一个固定的槽,只有当节点分配了槽,才能响应和这些槽关联的键命令。通过cluster addslots命令为节点分配槽。
4、redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。
5、Redis通过对KEY计算hash,将KEY映射到slot,集群中每个节点负责一部分slot的方式管理数据,slot最大个数为16384。
6、在集群定时任务 clusterCron 中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线。与节点下线相关的状态有两个,分别为 CLUSTER_NODE_PFAIL 和 CLUSTER_NODE_FAIL 。
两套redis之间怎么交互
1、插入时同步,比如先更新了oracle,再更新redis,这个要靠代码逻辑来做。谁先谁后得看设计了。
2、启动命令: redis-shake --conf={配置文件地址} --type={模式:sync/dump等} 模式需要与配置文件中的source target对应。
3、配置任务名称并选择要迁移的源和目标实例。选择复制类型,数据迁移应选择结构和全量复制(数据迁移)。根据需要,选择合适的冲突处理策略。选择要迁移的数据库对象。
4、Redis 多机器部署时,这些机器节点会被分成两类,一类是主节点(master 节点),一类是从节点(slave 节点)。一般 主节点可以进行读、写操作 ,而 从节点只能进行读操作 。
5、两个组件没有直接交互方式。需要做交互,用两组件支持的任何语言写桥接组件。如把redis的数据读出放到ActiveMQ中。也可以反过来操作。结论,选择一种会用的编程语言写桥接组件操作。
6、Redis分布式:将redis中的数据分布到不同的服务器上,每台服务器存储不同内容。Mysql集群是每台服务器都存放相同数据。