【问题标题】:Consideration before creating a single Redis instance创建单个 Redis 实例前的注意事项
【发布时间】:2015-01-24 00:09:07
【问题描述】:

我目前有一些不同的项目适用于不同的 redis 实例(考虑我有 3 个不同的 asp.net 应用程序的示例,这些应用程序位于不同的服务器上,每个应用程序都有它的 redis 服务器)。 我们被要求虚拟化并删除无用的实例,所以我想知道如果我只有一个 redis 服务器并且所有 3 个 asp.net 都指向同一个 redis 实例会发生什么。

对于我认为没有问题的应用程序密钥,我可以在我自己的密钥前加上应用程序名称,例如“fi-agents”、“ga-agents”等等……但我想知道的是验证会话会发生什么?

就我read 而言,前缀用作内部前缀,最终用户不能使用它来分隔...使用different Db 就足够了吗?

谢谢

【问题讨论】:

    标签: redis


    【解决方案1】:

    通常,除非有真正令人信服的理由,否则您不希望在同一个数据库中混合使用不同的应用程序及其数据。是的,它最初确实降低了运营成本,但它会迅速恶化为扩展和性能的噩梦。我相信,任何数据库都是如此。

    特别是使用 Redis,技术上是的 - 您可以使用键前缀或共享/编号的数据库方法。我不确定您所说的“身份验证”会话是什么意思,但您可能可以对它们应用相同的方法。但是你真的不应该……因为 Redis 是一个单线程进程,你最终可能会遇到一个应用程序阻塞另外两个应用程序的情况。由于 Redis 本身是如此轻量级,因此只需启动专用服务器 - 每个应用程序一个 - 如果必须的话,即使在同一个 VM 中也是如此。您可以在此处阅读有关为什么不想选择共享方法的更多背景信息:https://redislabs.com/blog/benchmark-shared-vs-dedicated-redis-instances

    【讨论】:

    • 我完全同意 Itamar,而是使用单个 Redis 实例(实例 == 进程而不是服务器),最好将负载分成同一服务器中的多个 Redis 实例(监听不同的端口:6379, 6380、6381)。我建议完全避免在同一实例中使用多个数据库。根据我的个人经验,共享 Redis 实例在性能方面缺乏很多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2016-06-21
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多