首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过多个服务器处理内存中缓存数据的方法

通过多个服务器处理内存中缓存数据的方法
EN

Stack Overflow用户
提问于 2020-08-27 18:09:27
回答 1查看 379关注 0票数 0

我想摆脱每隔20秒从数据库加载数据的cron,以便在服务器上的内存中缓存数据。我知道它看起来很糟糕,所以我想重新设计一下。

我有两个想法。

首先,我可能会使用message queue,比如kafkarabbitMQ等等。我曾经使用rabbitMQ来解决不同项目的这个问题。这样就行了。

顺便提一下,提出了第二种方法,即redis发布/订阅。它可能真的会起作用。然后,我将能够将所有内存缓存转换为redis-cache,或者在订阅时仅更新内存缓存。

这两种方法都是好的吗?有没有更好的方法来实现我的目标?我必须一次考虑多服务器更新。

EN

回答 1

Stack Overflow用户

发布于 2020-08-28 01:23:16

对于内存缓存来说,最重要的一点是让多个服务器之间的数据更新到最新。MQ和Redis解决方案各有优缺点。

对于MQ解决方案,优势在于您的缓存将分布到您的应用程序服务器,这可以减少缓存的负载压力(前面有负载均衡器)。

缺点是您需要确保每个服务器的缓存是同步的。由于MQ侦听器是异步的,因此不同的服务器可能会有延迟。如果您的服务器失去了与MQ的连接,您的数据也将过期。此外,如果您缓存了大量数据,您的应用程序内存可能会迅速增长,因为您的每个服务器都维护着一个完整的缓存副本。

对于Redis,它将始终使用单一数据源,因此同步不会成为问题。您不需要使用pub/sub,只需将数据加载到Redis即可。

但是Redis会有很大的负载压力,因为所有的服务器都会从同一个Redis上查询缓存。

因此,您可以根据自己的情况比较每种解决方案的优缺点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63613743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档