在内存中缓存海量数据

huh*_*ihi 5 memcached caching bigdata redis elasticsearch

我正在寻找一种可以处理大数据(<5GB)的内存中缓存解决方案。对于用户输入的搜索词,数据库(elasticsearch)将返回大量数据,该数据将通过该工具的不同网页进行分析和显示。现在我的问题是我想临时缓存这些大数据,直到用户会话结束为止,这样我就不必在每次用户打开新页面时都从elasticsearch再次获取它。它必须在内存中,因为基于磁盘的操作将花费一分钟以上,这将非常慢。

我最初以为是memcached,但最大限制为128MB。在阅读了很多内容之后,Redis似乎很合适,但是我不清楚一堆Redis节点是否可以串联工作。是否可以建立一个包含许多Redis节点的池,以便无需我指定节点就可以自动选择合适的节点SET并返回数据GET

TL; DR

  • 问题:将大数据(<5GB)缓存在内存缓存中
  • 可能的解决方案:Redis
  • 问题:我可以合并一堆Redis节点,以便我可以获取存储在其中任何一个节点中的密钥而无需指定特定节点。我不需要分发数据,因为单个用户的数据将适合单个节点的RAM。

Mor*_*itz 1

Redis 集群听起来很适合您的用例!

Redis集群提供了一种通过哈希槽的方式进行数据分片的机制。在设置集群时,这些插槽均匀分布在集群中的节点上。

每当您在集群中存储值时,都会计算给定键的相应哈希槽,并将数据转发到负责的节点。然后您可以以同样的方式再次查询您的数据。所以你的问题的答案当然是肯定的。

但是,每个键的最大值大小为 512MB。我不确定我是否正确理解了您的存储要求。我假设 5GB 是所有用户的估计总量。

查看redis 集群教程