内存缓存 VS。分布式系统中的集中缓存

In-memory cache VS. centralized cache in a distributed system

我们目前正在寻找最适合在分布式系统上访问关键数据的解决方案,我们正在考虑是使用内存缓存还是集中式缓存。

关于我们想要的数据的一些信息store/access:

我们看到的方式如下-

在内存缓存中

优点:

缺点:

集中缓存

为了方便交流,我们考虑过使用 Redis。

优点:

缺点:

我没有发现使用 Redis 进行集中式缓存有任何问题。

  1. 无论如何,你将要有一个集群设置,这样如果一个主节点失败,从节点将占据这个位置。
  2. 如果缓存由于某种原因被刷新,那么您必须构建缓存,同时请求将从主要源 (DB) 获取数据
  3. 您可以启用持久化并加载持久化在磁盘中的数据,并且可以秒级获取数据(即插即用)。如果你认为你会有不一致,那么按照下面的方法。

即使缓存不可用,系统也应该可以工作(显然有延迟时间)。这意味着应用程序逻辑应该检查 redis 中的缓存,如果它不存在或系统本身不可用,它应该从 dB 获取值,然后将其填充到 redis,然后服务于客户端。

通过这种方式,即使您的 redis master 和 slave 挂了,您的应用程序也能正常工作,但会有延迟。而且您的缓存也将是最新的。

希望这对您有所帮助。

Redis 是集中式缓存的绝佳选择。它速度快,性能出色。我们用它来存储数 TB 的数据。

似乎您应该使用集中式缓存,位于您的数据库和应用程序层之间,其中所有数据库 read/writes 使用直写缓存失效方案通过缓存。