首页 > 解决方案 > 内存缓存如何充当分布式?

问题描述

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

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

标签: cachingredisdistributed

解决方案


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

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

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

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


推荐阅读