Redis 作为缓存和队列使用同一实例



我的应用程序需要两个用例来缓存:

  1. Redis 作为缓存。我计划使用内存策略按 id 缓存项目(JSON blob allkeys-lru。平均 JSON 项目需要 <1 Mb。
  2. Redis 作为队列。我决定使用Redis队列API构建内容社交提要(类似于Instagram或Facebook)。它将使用相同的内存策略。队列的容量将为 ~1000 个元素。平均队列(表示每个用户的源)将占用 ~10 Mb。

是否可以将单个 Redis 实例用于这两个目的而不影响性能?拆分它们以获得更好的性能更好吗?谢谢。

没有理由不尝试;但是,我建议在同一 redis 实例中使用两个数据库,这样,如果您想将大小增加到两个单独的实例,则可以在独立于另一个的数据库上转储和重新定位。

两个实例会比一个更快,但在你知道你的需求是什么之前,成本翻倍是没有意义的 - 但是如果涉及到这一点,保持数据库的独立将使这个过程不那么痛苦。

Redis 是单线程的,因此使用 2 个 Redis 而不是一个 Redis 可以获得更多的 CPU 能力。您仍然需要管理 2 个数据库(非常适合扩展,但需要更多备份操作等)。

如果您在 redis 中不需要大量的 CPU 能力(使用需要大量计算的函数,例如在 LUA 脚本中),我认为使用 2 个 redis 而不是一个不会看到太大的区别。大多数情况下,I/O是驱动性能的最慢部分,并且由于Redis是内存数据库,因此不会产生太大影响。

最新更新