Caching 在本地缓存redis群集

Caching 在本地缓存redis群集,caching,redis,Caching,Redis,我有一个想使用redis的场景,但我不知道如何设置它。以下是我们最终想要实现的目标: 一个冗余的中央redis集群,其中所有写入操作将与两个aws区域中的服务器一起进行 本地redis缓存在服务器上,该服务器将保存完整中央集群的副本 原因是我们有许多服务器只需要读访问,我们希望它们即使在停机(服务器无法到达主集群)的情况下也是独立的 我知道缓存中可能存在“过时数据”问题,但只要最终保持一致性,我们就可以容忍这种情况 使用redis实现这一目标的正确方法是什么 谢谢 您需要 Redis复制: R

我有一个想使用redis的场景,但我不知道如何设置它。以下是我们最终想要实现的目标:

  • 一个冗余的中央
    redis
    集群,其中所有写入操作将与两个
    aws
    区域中的服务器一起进行

  • 本地
    redis
    缓存在服务器上,该服务器将保存完整中央集群的副本

  • 原因是我们有许多服务器只需要读访问,我们希望它们即使在停机(服务器无法到达主集群)的情况下也是独立的

    我知道缓存中可能存在“过时数据”问题,但只要最终保持一致性,我们就可以容忍这种情况

    使用
    redis
    实现这一目标的正确方法是什么

    谢谢

    您需要

    Redis复制:

    Redis复制是一种非常易于使用和配置的主从复制,它允许从Redis服务器成为主服务器的精确副本。以下是有关Redis复制的一些非常重要的事实:

    • Redis使用异步复制。但是,从Redis 2.8开始,从机会定期确认从复制流处理的数据量
    • 一个主节点可以有多个从节点
    • 从属设备能够接受来自其他从属设备的连接。除了将多个从属设备连接到同一个主设备之外,从属设备还可以以级联式结构连接到其他从属设备
    • Redis复制在主机端是非阻塞的。这意味着当一个或多个从属服务器执行初始同步时,主服务器将继续处理查询
    • 从机端的复制也是非阻塞的。当从属服务器执行初始同步时,它可以使用旧版本的数据集处理查询,假设您在Redis.conf中配置了Redis。否则,您可以将Redis从属配置为在复制流停止时向客户端返回错误。但是,在初始同步之后,必须删除旧数据集并加载新数据集。在这个短暂的窗口期间,从机将阻止传入连接(对于非常大的数据集,这可能长达数秒)
    • 复制既可以用于可伸缩性,以便有多个从机用于只读查询(例如,慢O(N)操作可以卸载到从机),也可以仅用于数据冗余
    • 可以使用复制来避免让主机将完整数据集写入磁盘的成本:一种典型的技术是配置master redis.conf以完全避免持久化到磁盘,然后连接一个配置为不时保存的从机,或者启用AOF。但是,必须小心处理此设置,因为重新启动的主数据集将以空数据集开始:如果从数据集尝试与其同步,则从数据集也将被清空

    完成以下步骤:

    因此我决定使用
    redis sentinel

    使用redis sentinel,我可以将缓存服务器上的
    从属优先级设置为0,这将阻止它们成为主服务器

    我将设置一个主设备,和几个“备份主设备”,它们实际上是从属设备,
    从属优先级
    设置为非0的值,这将允许它们在主设备停机后接管

    哨兵将监视主机,一旦主机倒下,它将提升其中一个“备份主机”,并将其提升为新主机


    可以找到更多信息

    您好,谢谢您的回复,但是我对这种架构有一个问题。当主人倒下时会发生什么?我不只是想把任何一个奴隶提升为一个奴隶主,我希望在主奴隶被提升后,另一个后备奴隶主能够接手down@Algosub,如果主服务器宕机,从属服务器不会发生任何事情,它们的行为就是这样,每当主服务器联机时,写入请求将自动被主服务器接受,该体系结构已经实现,并在高达100000个读/写请求的环境中成功运行。