【问题标题】:Redis namespaces for multi-tenant apps多租户应用程序的 Redis 命名空间
【发布时间】:2021-03-17 23:55:01
【问题描述】:

如何在多租户环境中使用单个 Redis 实例。意味着多个不同的应用程序使用同一个 Redis 实例。

假设我有两个应用程序,一个是 Baking App,另一个是 Delivery App。两个应用程序将使用相同的 Redis 实例,并且两个应用程序都将保存具有相似键模式的相似键(例如 userid:uuid -> johnsmith)等。显然,使用相同的 Redis 会发生冲突,有没有办法将数据库“命名空间”为这样即使相同的密钥也会相互隔离,允许多个应用同时使用同一个 Redis 实例?

并且还可以与 Redis 搜索一起使用,并且以同样的方式,搜索和索引将与每个应用程序隔离。因此,如果搜索在 Delivery App 命名空间上,它不会从 Baking App 命名空间获取任何内容。

如何做到这一点?

【问题讨论】:

  • This 可能会有所帮助。
  • @for_stack 是的,名称前缀可能会有所帮助,但我正在寻找可以用于搜索的东西,而不会将搜索从“命名空间”泄漏到“命名空间”,例如“前缀”到“前缀”搜索泄漏
  • Redis 逻辑数据库怎么样,您可以为每个租户创建逻辑数据库并使用它。 SELECT 12redis.io/commands/select

标签: redis


【解决方案1】:

所以你可以做很多事情:

  1. 您可以在键前加上应用名称,例如 app1:userid:uuid 等
  2. 你可以使用redis提供的不同内存db。 Redis 最多支持 16 个数据库。您可以将不同应用程序的密钥存储在不同的数据库中。要获取它们,请连接各自的数据库。
  3. 您可以使用上述两种方法。

为了提高安全性,使应用程序无法访问其他应用程序的数据:

  1. 实施 Redis ACL - 如果您使用 Redis 版本 6+,您可以利用使用 ACL(访问控制列表)的功能。您可以为每个应用程序创建具有密码的用户,并在建立 Redis 连接时传递这些凭据。您甚至可以向用户添加权限/命令等。
  2. 无法访问不同 DB 中的数据,即如果连接到 DB 0,则无法从 DB 1 获取数据。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2018-03-23
    • 2019-10-16
    • 1970-01-01
    • 2022-01-27
    • 2018-08-29
    • 2011-05-05
    • 2015-08-17
    相关资源
    最近更新 更多