我正在从事一个包含 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:key1
、api2:env2:key2
);对于第一个消费者的第一个环境的所有 key 都有一个 key 前缀:con1:env1:
,依此类推。
这样就可以将不同项目不同环境的数据全部保存在一个redis集群中。
关于architecture - 如何设计架构以在 Redis 中实现适当的数据分离而不产生数十个 Redis 实例并能够扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40110141/