【发布时间】:2021-09-26 16:16:49
【问题描述】:
我知道 REDIS 缓存是内存缓存的一个例子。但它(REDIS)也可以作为分布式缓存。
我的问题是缓存数据到底存储在内存缓存中的什么位置。缓存是否直接部署在应用服务器上?如果是,那么 REDIS 作为内存缓存如何充当分布式?
【问题讨论】:
标签: caching redis distributed
我知道 REDIS 缓存是内存缓存的一个例子。但它(REDIS)也可以作为分布式缓存。
我的问题是缓存数据到底存储在内存缓存中的什么位置。缓存是否直接部署在应用服务器上?如果是,那么 REDIS 作为内存缓存如何充当分布式?
【问题讨论】:
标签: caching redis distributed
基本的 Redis 服务器是在一台机器上运行并将数据存储在内存中的单个服务器。任意数量的客户端(应用程序)都可以连接到它并获取或更新值。应用程序和 Redis 可以在同一台机器上,但通常在不同的机器上(例如,多台机器与同一个 Redis 服务器通信)。
它可以通过多种方式进行分发。你是复制:每个 Redis 服务器都有一份相同数据的副本。此处描述了此设置:https://redis.io/topics/replication
更有趣的分布式操作涉及多个 Redis 服务器,每个服务器维护不同的数据子集。这需要协调。此设置称为 Redis 集群,如下所述:https://redis.io/topics/cluster-spec。在最基本的层面上,当客户端想要读取或设置密钥时,它首先对其进行哈希处理以获取插槽号。每个服务器负责一个插槽子集。客户端要么维护状态以了解哪个服务器负责哪个插槽,要么询问某个服务器,它会告诉它。然后它只是使用常规的 Redis 命令与该服务器就该密钥进行通信。
除此之外,还有复杂性,因为服务器集可能会因故障或允许集群增长而发生变化。
【讨论】: