我目前正在设计项目的体系结构,或者至少尝试弄清对我的情况有用的东西。
**简单用例 后端中将有数千个配置文件,我需要实现一个快速搜索引擎。因此,elasticsearch在这种情况下看起来很完美。每次更新配置文件时,索引都会通过异步任务进行更新。
我的问题是:如果我想为个人资料的详细信息实现缓存系统。我应该坚持使用Elasticsearch并将这些数据放入索引中吗?还是使用Redis并执行诸如profil_id => data之类的事情?
我认为听起来都不错,问题在于每当更新配置文件时,在Elasticsearch中重新建立索引后,我都必须刷新它。如果我想在后端查看更改。
那我该怎么办?非常感谢你!
答案 0 :(得分:0)
您应该考虑使用RediSearch。使用RediSearch可以为您提供满足您需求的解决方案,从而获得Redis性能和全文本支持。
答案 1 :(得分:-1)
Elasticsearch和redis基本上旨在解决两个不同的问题,因为一个做索引,而另一个做缓存。 Redis旨在尽快返回已请求的数据,而as Elasticsearch是一个搜索和分析引擎,非常适合您必须实现快速搜索引擎的用例,并且它的性能要比任何内存数据结构存储或缓存(例如 redis )高>(假设您的搜索很复杂,将涉及一些汇总/过滤器。)
问题来自配置文件更新因为您的配置文件更新不是那么频繁,所以您实际上可以对ES索引进行部分更新,而不是进行重新索引。因此,每当一个人更新其配置文件时,都要获取更改集(更改的数据)并进行部分更新ES索引中的特定文档。您可以在partial update这里查看其操作方式。
这个特定的stackoverflow答案将帮助您cache vs indexing