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

时间:2014-02-24 20:41:23

标签: caching memory redis feed

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

  1. Redis作为缓存。我计划使用allkeys-lru内存策略通过id缓存项目(JSON blob)。平均JSON项目将采用< 1 Mb。
  2. Redis作为队列。我决定使用Redis队列API构建内容社交Feed(类似于Instagram或Facebook)。它将使用相同的内存策略。队列的容量将是~1000个元素。平均队列(代表每个用户的Feed)大约需要10 Mb。
  3. 我是否可以将单个Redis实例用于这两个目的而不会影响性能?为了获得更好的性能,拆分它们会更好吗? 谢谢。

2 个答案:

答案 0 :(得分:3)

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

两个实例会比一个实例更快,但是在你知道你的需求是什么之前没有任何意义可以将成本加倍 - 但保持数据库的独立性会使这个过程不那么痛苦。

答案 1 :(得分:2)

Redis是单线程的,因此您可以使用2个redis而不是1个来获得更多的CPU能力。您仍然需要管理2个数据库(可以很好地进行扩展,但需要更多的备份操作等)。

如果你在redis中不需要很多CPU能力(需要大量计算的功能,比如在LUA脚本中),我认为通过使用2个redis而不是一个来看你会发现很大的差别。大多数情况下,I / O是驱动性能最慢的部分,而Redis是一个内存数据库,它不会产生很大的影响。