我在寻找可处理大数据的内存缓存解决方案(< 5GB)。对于用户输入的搜索词,数据库(elasticsearch)将返回大量的数据,工具将通过该工具的不同网页分析和显示大量数据。现在我的问题是,我想暂时缓存这些大数据,直到用户会话结束,这样每次用户打开一个新页面时,我都不必从elasticsearch再次获取它。它将不得不在内存中,因为基于磁盘将花费一分钟,这将非常缓慢。缓存内存中的大量数据
我最初认为memcached,但它的最大限制为128MB。阅读了很多后,Redis看起来很合适,但是我不清楚一堆Redis节点是否可以协同工作。是否可以建立多个Redis节点池,以便在SET
和GET
上自动选择合适的节点,而无需我指定节点?
TL; DR
- 问题:在内存中缓存缓存大数据(< 5GB)
- 可能的解决方案:Redis的
- 问题:我能汇集一堆Redis节点,这样我就可以在没有指定特定节点的情况下获取存储在其中任何一个中的密钥。我不需要分发我的数据,因为单个用户的数据将适合单个节点的RAM。
确保您没有过度优化。 5 GB听起来像很多数据,但除非是每个用户,否则其实并不多。 Elasticsearch'filter'结果在默认情况下被缓存(有些例外,如脚本和地理操作),因此后续搜索应该很快返回(除1.4中有少数例外情况外,不会对缓存查询进行缓存)。 – pickypg 2014-11-24 02:47:45
Yup 5GB是每个用户。但由于它是一个B2B工具,用户数量有限。此外,如果用户数量增加,我可以添加更多的节点,因为单个用户的数据仍然适合单个节点的RAM。在elasticsearch中,我使用扫描和滚动,其中的结果,我假设没有缓存? – huhahihi 2014-11-24 09:13:32