Redis 缓存跨区域共享

标签 redis distributed region roaming

我有一个使用 redis 缓存的应用程序,到目前为止它运行良好。然而,我们需要将我们的应用程序分布到不同的区域(通过用户位置的动态 DNS 调度程序,本地用户可以访问最近的服务器)。 考虑到网络限制和带宽,不太可能搭建一个中心化的redis。所以我们要为不同的地区分配不同的redis。所以这里的问题是我们如何处理漫游情况。用户在位置 1 打开应用程序,同时继续使用位置 2 的应用程序而不会丢失位置 1 的缓存。

最佳答案

您将不得不使用分层架构。这就是 Akamai 或 Amazon Cloudfront 等大多数 CDN 的工作方式。 简而言之,它是这样工作的:

  1. 当请求一个对象时,查看它是否存在于为位置L1分配的redis缓存服务器S1中。

  2. 如果S1中不存在,则检查S2,S3....SN等其他位置的缓存服务器中是否存在。

  3. 如果在 S2...SN 中找到,则将对象也存储在 S1 中,并提供该对象。

  4. 如果在 S2...SN 中也找不到,则从后端获取新的对象,并存储在 S1 中。

如果你使用memcached做缓存,那么facebook的开源mcrouter项目会有所帮助,因为它进行集中缓存。

关于Redis 缓存跨区域共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34172167/

相关文章:

.net - .NET 的分布式锁管理器 (DLM)?

search - 使用扩展区域在 emacs 中更好地搜索

EMACS:扩展/扩展区域,使其包含整行

c#:检查椭圆上的点

数据库选择 : High-write, 低读

java - "sql like"apache 配置单元的替代品

asp.net - Redis 是适合公司警报消息系统的消息系统吗?

java - Redis:初学者问题

Redis:如何删除所有超过 3 个月的 key

REDIS - 多组交集