首页>>数据库>>nosql->redis的共识算法,redislru算法

redis的共识算法,redislru算法

时间:2024-01-09 本站 点击:0

Redis哨兵机制原理浅析

原理 监控 sentinel节点需要监控master、slave以及其他sentinel节点的状态。这一过程是通过Redis的pub\sub系统实现的。

Redis哨兵模式的实现原理。关于哨兵的原理,关键是了解以下几个概念:定时任务:每个哨兵节点维护了3个定时任务。

Redis的哨兵机制就是解决主从复制存在缺陷(选举问题),解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移。 要使用哨兵机制,除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤。

其原理是哨兵通过发送命令,等待Redis服务器响应,如果Redis服务器一直没有响应,说明这个Redis服务器可能已经宕机了,从而监控运行的多个Redis实例。

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是 哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

(1)集群监控,负责监控redis master 和slave进程是否正常工作。(2)消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员。(3)故障转移,如果master node挂掉了,会自动转移到slave node上。

gemfire和redis的区别

分布式计算是一种计算方法,和集中式计算是相对的。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。分布式计算可以分为以下几类:传统的C/S模型。

通过 CQRS 架构,由于 CQ 两端是事件驱动的,当 C 端有任何状态变化,都会产生对应的事件去通知 Q 端,所以我们几乎可以做到 Q 端的准实时更新。

听说12306是采用了Pivotal Gemfire这种高大上的内存数据库,我对这个不太了解。

Redis-Cluster

redis-cluster把所有的物理节点映射到[0-16383]个 slot 上,基本上采用平均分配和连续分配的方式。

CLUSTER REPLICATE node_id 将当前节点设置为 node_id 指定的节点的从节点。CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。

在redis-cluster集群中,每一个主节点可以添加多个从节点,主节点和从节点遵循主从模式的特性。 当用户需要处理更多的读请求时,添加从节点可以扩展系统的读性能。

基于以上,Redis集群方案显得尤为重要。通常有3个途径:官方Redis Cluster;通过Proxy分片;客户端分片(Smart Client)。以上三种方案各有利弊。

搭建集群工作需要以下三个步骤:1)准备节点。2)节点握手。3)分配槽。Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整高可用的集群。每个节点需要开启配置cluster-enabled yes,让Redis运行在集群模式下。

修改配置文件 在每个节点的配置文件里面增加密码选项,一定要加上 masterauth,不然 Redirected 的时候会失败。masterauth redispassword requirepass redispassword 修改后需要重启节点。

一文了解啥是Gossip协议?

Gossip协议是一种去中心化的消息传递协议,可以用于在一个班级里传播消息。

Gossip协议是一种基于节点之间互相通信的协议,它的主要功能是将信息在网络中进行传播,以达到分布式系统中的数据一致性。

Gossip是最终一致性协议,是目前性能最好,容错性最好的分布式协议。目前Prometheus的告警组件alertmanager、redis、s区块链等项目都有使用Gossip。本文不介绍Gossip原理,大家自行谷歌。

Redis 集群采用的就是 gossip 协议来交换信息。当有新节点要加入到集群的时候,需要用到一个 meet 命令。 http:// 这玩意就是人工指定。

Redis数据的过期与淘汰

noeviction:默认策略,不淘汰数据;大部分写命令都将返回错误(DEL等少数除外)。allkeys-lru:从所有数据中根据 LRU 算法挑选数据淘汰。volatile-lru:从设置了过期时间的数据中根据 LRU 算法挑选数据淘汰 。

值得一提的是,设置expire会消耗额外的内存,所以 使用allkey-lru可以更高效地使用内存 ,因为这样使用的时候不需要设置过期时间。Redis使用的并不是完全LRU算法,而是近似LRU算法。

如果淘汰之后还是超出,那就继续随机淘汰,直到不超出为止。如果 maxmemory-policy 是volatile-xxx,就从设置过期时间的key里采样,否则就从所有key里采样。

然后在选到的key中选择.volatile-random:从已设置过期时间的哈希表(server.db[i].expires)中随机挑选key淘汰掉allkey-random:从所有的key的哈希表server.db[i].dict)中随机挑数据淘汰。

所以,虽然key过期了,但是没被清理的话,还是会占内存的。内存淘汰管理机制Memory Management 当内存占满之后,redis提供缓存淘汰机制。

关于redis的共识算法和redislru算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


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