我正在寻找可以处理大数据(<5GB)的内存缓存解决方案。对于用户输入的搜索项,数据库(elasticsearch)将返回大量数据,工具将通过该工具的不同网页分析和显示该数据。现在我的问题是我想暂时缓存这些大数据,直到用户会话结束,这样每次用户打开新页面时我都不必再从elasticsearch中获取它。它必须在内存中,因为基于磁盘将花费一分钟,这将非常慢。
我最初认为memcached但它的最大限制为128MB。在阅读了相当多的内容后,Redis看起来很合适,但我不清楚一堆Redis节点是否可以串联工作。是否可以设置许多Redis节点的池,以便在SET
上自动选择合适的节点,并在GET
上返回数据而不必指定节点?
TL; DR
答案 0 :(得分:1)
Redis群集听起来非常适合您的用例!
Redis集群通过散列槽提供数据分片机制。在设置时,这些插槽均匀分布在群集中的节点上。
无论何时在cluser中存储值,都会计算给定密钥的相应散列槽,并将数据转发到负责节点。同样,您可以再次查询数据。 所以你的问题的答案当然是肯定的。
但是,每个键的最大值大小为512MB。我不确定我的存储要求是否正确。我假设5GB是所有用户的估计总金额。
答案 1 :(得分:1)
您还可以NCache查看Tayzgrid(。net)/ Alachisoft(java),
这两种解决方案都提供了动态集群的分布式缓存,允许在运行时添加或删除集群中的节点,而不会丢失任何数据。此外,智能客户端确保引用适当的节点来针对任何密钥获取/存储记录。