architecture - 如何设计架构以在 Redis 中实现适当的数据分离而不产生数十个 Redis 实例并能够扩展

标签 architecture redis

我正在从事一个包含 5 个子项目的大型企业项目 - 被视为独立的应用程序。为了简单起见,两个 API 提供数据,另外三个使用它们并与用户交互。它们不共享相同的缓存。 API 主要缓存查询和解析/转换的 XML,而消费者主要缓存 API 调用和用户相关数据。

每个 API 项目都有 5 个环境,每个使用者有 4 个环境。 2*5+3*4 = 22 个环境。

目前它们都使用单独的 memcached 服务(所以 22)。

我们考虑/计划迁移到 Redis 作为缓存平台,我们正在考虑 Redis Cluster,但我们也希望有良好的数据分离。对于每个项目/环境,拥有 22 个集群似乎不是正确的选择。

有哪些替代方案?

最佳答案

你可以只搭建一个redis集群,不同的项目使用不同的key前缀来隔离key,即为每个项目创建一个命名空间。

例如第一个API项目的第一个环境的所有key都有一个key前缀:api1:env1:(例如api1:env1:key1, api1:env1:key2);第二个 API 项目的第二个环境的所有 key 都有一个 key 前缀:api2:env2:(例如 api2:env2:key1api2:env2:key2 );对于第一个消费者的第一个环境的所有 key 都有一个 key 前缀:con1:env1:,依此类推。

这样就可以将不同项目不同环境的数据全部保存在一个redis集群中。

关于architecture - 如何设计架构以在 Redis 中实现适当的数据分离而不产生数十个 Redis 实例并能够扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40110141/

相关文章:

java - Android MVP 发布 Presenter 的正确方法

java - 使用jedis如何缓存Java对象

ruby-on-rails - 如何在 Redis 中命名和存储我的数据集?

redis - 何时使用键/值存储(例如 Redis)代替/与 SQL 数据库一起使用?

ruby - 如何使用 sinatra streaming api 关闭 redis 连接?

architecture - 微服务:集中授权与每个服务中的授权

php - 管理多个 HTML 片段的命名空间

model-view-controller - 新的 Web 应用程序应该遵循 MVC 还是 MVP 模式?

java - 什么样的设计模式适合我的需要?

.net - 如何同步 Redis 与本地内存缓存?