【发布时间】:2016-03-26 23:05:59
【问题描述】:
缓存解决方案和索引解决方案之间的真正区别是什么?在我看来,索引解决方案实际上是具有运行搜索查询能力的缓存(例如:弹性搜索)。是否有任何真正的理由在同一个项目中同时使用缓存解决方案和索引解决方案,或者索引解决方案基本上会使任何其他缓存变得多余?
示例:假设我将 NEST 用于 ElasticSearch,它将存储和返回 POCO;如果我随后查询 ElasticSearch 并让 POCO 返回给我,那不认为是在使用从 ElasticSearch 返回的缓存对象吗?
目前,我使用我拥有的 ICacheManager 接口将数据存储在缓存中.. 像这样:
return CacheManager.Get(cacheKey, () =>
{
// return something...
});
这对于 ElasticSearch 会变得多余吗?
编辑
感谢大家的回答。我完全了解缓存是什么,并且已经理解了文本搜索索引背后的一般概念,所以我只是想知道索引是否已经兼作缓存,因此会使任何其他缓存变得多余。毕竟,我不想在内存中保留 2 个缓存(例如:ElasticSearch + Redis),而一个缓存可以做得很好。不过,我想我现在有一个更好的主意;特别是当我意识到并非所有字段都始终存储在索引中时,因此我们需要从缓存中获取对象或直接从数据库中获取对象 - 至少在某些情况下是这样。谢谢大家!
【问题讨论】:
-
鉴于这是一年多前提出的问题,我很想知道您是否探索过 ES 作为缓存解决方案。
标签: caching indexing elasticsearch