Solr可以用作缓存的替代方案吗?

时间:2016-05-17 05:33:45

标签: postgresql caching solr ehcache

我们使用Postgresql进行持久化,使用ehcache作为缓存。我们最近推出了Solr,以实现更快的搜索(模糊和精确搜索)。

所以我的问题是:Solr能否以可以取代ehcache的方式进行调整? (比如以云模式运行)或者

只是为问题添加一些上下文:

我们有一堆表来存储联系信息。 Ehcache目前用于获取给定ID的这些联系人。 Solr将广泛用于搜索相关操作。由于Solr已经在进行搜索...为什么不替换Ehcache(因为在某种程度上它就像:使用给定ID进行搜索),前提是性能不会受到影响。

3 个答案:

答案 0 :(得分:1)

我会采取行动,但不太可能有任何人对这样一个模糊的问题有明确的答案。 https://lucidworks.com/blog/2012/07/23/sizing-hardware-in-the-abstract-why-we-dont-have-a-definitive-answer/现在已经四岁了,但仍然具有相关性。答案将完全取决于您需要做什么。

所以,一些通用陈述:

  • SolrCloud与否不太可能成为影响您决定的问题。如果您希望Solr处理复制和索引管理,请使用它。不要,如果你宁愿亲自去做。
  • Solr很快,(给予足够的内存)所以它肯定可能你可以摆脱缓存层。只有你知道你的要求。
  • 仔细阅读https://wiki.apache.org/solr/SolrCaching,特别是您可能对QueryResultCache感兴趣。

答案 1 :(得分:1)

简单的答案是:

<强>原因

cache在内存中,但solr的索引在磁盘上(除了已缓存的部分)。

读取内存比读取磁盘快数千倍。

因此,solr不能用作常规目的缓存,在这种情况下,ehcachememcachedredis将是更好的选择。

solr擅长的是它的搜索能力analyzer & tokenizer & filter,但不是缓存。

答案 2 :(得分:1)

除了将成为答案的其他原因之外,还有更改的粒度。 Lucene(底层库)以只读形式存储数据。 Solr在其上添加了可更新的文档,但是使它们可见仍然是一个繁重的操作。 Solr的最新版本通过软提交使其更容易和更快,但是使可见变化的价格仍然是非常重要的。

因此,它实际上没有针对更新/缓存单个值进行优化。数据结构针对多文档更新进行了优化,然后通过缓存超过该临时只读状态进行快速搜索。