使用同一个实例,将Redis同时作为缓存和队列

3

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

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

我可以在同一实例中同时使用Redis来满足这两个需求吗?拆分它们是否会更好地提高性能? 谢谢。

2个回答

4

没有理由不尝试;我建议在同一redis实例中使用两个数据库,这样如果您想要升级到两个单独的实例,您可以从一个数据库中转储并重定位到另一个。

两个实例比一个实例更快,但在您了解自己的需求之前,没有必要将成本翻倍 - 但是保持数据库分开将使这个过程稍微不那么痛苦(如果需要升级)。


3
Redis是单线程的,因此使用2个Redis而不是一个可以获得更多的CPU性能。但是您将需要管理两个数据库(可以用于扩展,但需要更多备份等操作)。
如果在Redis中不需要大量的CPU计算能力(例如LUA脚本中需要大量计算的函数),我认为使用2个Redis而不是一个不会有太大的差异。大多数情况下,I/O是驱动性能最慢的部分,由于Redis是内存数据库,所以它不会产生太大影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接