我们使用Postgresql进行持久化,使用ehcache作为缓存。我们最近推出了Solr,以实现更快的搜索(模糊和精确搜索)。
所以我的问题是:Solr能否以可以取代ehcache的方式进行调整? (比如以云模式运行)或者
只是为问题添加一些上下文:
我们有一堆表来存储联系信息。 Ehcache目前用于获取给定ID的这些联系人。 Solr将广泛用于搜索相关操作。由于Solr已经在进行搜索...为什么不替换Ehcache(因为在某种程度上它就像:使用给定ID进行搜索),前提是性能不会受到影响。
答案 0 :(得分:1)
我会采取行动,但不太可能有任何人对这样一个模糊的问题有明确的答案。 https://lucidworks.com/blog/2012/07/23/sizing-hardware-in-the-abstract-why-we-dont-have-a-definitive-answer/现在已经四岁了,但仍然具有相关性。答案将完全取决于您需要做什么。
所以,一些通用陈述:
答案 1 :(得分:1)
简单的答案是:否
<强>原因强>:
cache
在内存中,但solr的索引在磁盘上(除了已缓存的部分)。
读取内存比读取磁盘快数千倍。
因此,solr不能用作常规目的缓存,在这种情况下,ehcache
或memcached
或redis
将是更好的选择。
solr擅长的是它的搜索能力analyzer & tokenizer & filter
,但不是缓存。
答案 2 :(得分:1)
除了否将成为答案的其他原因之外,还有更改的粒度。 Lucene(底层库)以只读形式存储数据。 Solr在其上添加了可更新的文档,但是使它们可见仍然是一个繁重的操作。 Solr的最新版本通过软提交使其更容易和更快,但是使可见变化的价格仍然是非常重要的。
因此,它实际上没有针对更新/缓存单个值进行优化。数据结构针对多文档更新进行了优化,然后通过缓存超过该临时只读状态进行快速搜索。