【问题标题】:How does in-memory cache acts as distributed?内存缓存如何充当分布式?
【发布时间】:2021-09-26 16:16:49
【问题描述】:

我知道 REDIS 缓存是内存缓存的一个例子。但它(REDIS)也可以作为分布式缓存。

我的问题是缓存数据到底存储在内存缓存中的什么位置。缓存是否直接部署在应用服务器上?如果是,那么 REDIS 作为内存缓存如何充当分布式?

【问题讨论】:

    标签: caching redis distributed


    【解决方案1】:

    基本的 Redis 服务器是在一台机器上运行并将数据存储在内存中的单个服务器。任意数量的客户端(应用程序)都可以连接到它并获取或更新值。应用程序和 Redis 可以在同一台机器上,但通常在不同的机器上(例如,多台机器与同一个 Redis 服务器通信)。

    它可以通过多种方式进行分发。你是复制:每个 Redis 服务器都有一份相同数据的副本。此处描述了此设置:https://redis.io/topics/replication

    更有趣的分布式操作涉及多个 Redis 服务器,每个服务器维护不同的数据子集。这需要协调。此设置称为 Redis 集群,如下所述:https://redis.io/topics/cluster-spec。在最基本的层面上,当客户端想要读取或设置密钥时,它首先对其进行哈希处理以获取插槽号。每个服务器负责一个插槽子集。客户端要么维护状态以了解哪个服务器负责哪个插槽,要么询问某个服务器,它会告诉它。然后它只是使用常规的 Redis 命令与该服务器就该密钥进行通信。

    除此之外,还有复杂性,因为服务器集可能会因故障或允许集群增长而发生变化。

    【讨论】:

    • 谢谢@DS。了解 REDIS 的精彩解释。我有一个后续问题:这是否意味着内存缓存通常不需要部署在应用程序服务器本身上?
    • 没有。与“磁盘上”相比,“内存中”是一个区别——这对速度有好处,但会限制可以缓存的数据量(因为内存比磁盘小得多)。 “内存中”有时也意味着没有持久性(服务器停止时条目消失),但在 Redis 的情况下,可以选择将数据持久化到磁盘 (redis.io/topics/persistence)。还有其他由磁盘支持的缓存,因此可以处理更多数据(但有不同的目标),例如en.wikipedia.org/wiki/Varnish_(software)#Architecture
    猜你喜欢
    • 2020-09-26
    • 2016-10-29
    • 2014-10-26
    • 1970-01-01
    • 2012-03-15
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多