1

我目前正在设计我的项目的架构,或者至少尝试找出对我来说有用的东西。

** 简单用例 我将在后端拥有数千个配置文件,我需要实现一个快速搜索引擎。所以在这种情况下,elasticsearch 看起来很完美。每次更新配置文件时,索引将由异步任务更新。

我现在的问题是:如果我想为配置文件的详细信息实现缓存系统。我应该坚持使用弹性搜索并将这些数据放在我的索引中吗?或者使用 Redis 并执行类似 profile_id => data 的操作?

我认为两者听起来都不错,问题是每当更新配置文件时,我必须在弹性搜索中重新索引后刷新它。如果我想看到我的后端的变化。

那我该怎么办?太感谢了 !

4

2 回答 2

1

您应该考虑使用RediSearch。使用RediSearch可以为您提供满足您需求的解决方案,同时获得 Redis 性能和全文支持。

于 2018-08-19T13:20:42.330 回答
0

Elasticsearch 和 redis 基本上是为了解决两个不同的问题,一个是索引,另一个是缓存。Redis 旨在尽可能快地返回已请求的数据,而 Elasticsearch 是一个搜索和分析引擎,它非常适合您必须实现快速搜索引擎的用例,并且它比任何内存中的性能都更高数据结构存储或缓存,例如redis(假设您的搜索会很复杂,将涉及一些聚合/过滤器)。

问题出在个人资料更新 由于您的个人资料更新不是那么频繁,您实际上可以对 ES 索引进行部分更新而不是重新索引。因此,每当一个人更新其个人资料时,都会获取更改集(更改的数据)并对特定内容进行部分更新ES 索引中的文档。您可以在这里看到它是如何完成部分更新的。

这个特定的stackoverflow答案将帮助您缓存与索引

于 2018-08-17T11:29:18.103 回答