【问题标题】:Jedis 'front end' for ESES 的绝地武士“前端”
【发布时间】:2017-01-15 12:48:43
【问题描述】:

我刚开始学习 Redis。我将它安装在我的笔记本电脑上并编写了一个简单的 java 客户端。我有一个 Elasticsearch 实例来处理来自基于 Web 的应用程序的查询。它非常快,但我想知道是否有一个实际案例,我可以使用 Redis '前置' elasticsearch 实例以加快客户端的响应时间。在我非常有限的 redis 知识中,我想知道将 ES 查询的响应存储在 Redis 中是否实用,或者会提供任何价值?更一般地说,谁能给我一个 ES 和 Redis 如何一起使用的例子。谢谢

【问题讨论】:

    标签: elasticsearch redis


    【解决方案1】:

    在图片中使用 Redis 的一个用例是在通过 Logstash 将文档加载到 Elasticsearch 时将其用作 temporary buffer

    由于 Redis 基本上是一个缓存,它的主要目的是让数据快速可用,否则无法及时可用,因为您查询的后端服务不够快。既然您说您的 Elasticsearch 实例“相当快”(无论这意味着什么),您为什么要缓存响应?

    此外,当您将缓存放入图片时,您还会出现其他新问题,最重要的是,您如何使缓存过期,何时以及以何种频率过期?因此,如果您在 Elasticsearch 中的数据非常稳定,您可能会从缓存中受益。但是,如果您在 Elasticsearch 中的数据经常更改,您将经常面临 Redis 缓存中的许多陈旧数据问题,这是您不希望遇到的问题。

    在我看来,花时间改进 ES 查询和映射以提供超快的数据比花时间调整可能在 1% 的时间内有用的缓存要好得多。

    【讨论】:

    • 谢谢,这是有道理的。我的想法是在 redis 中实现一个简单的缓存,将搜索字符串存储为键,将响应存储为值。所以,从前端来说,如果有人进行了搜索,它会先打redis,看看之前是否运行过相同的查询,如果有,则返回之前的结果,如果没有,则打ES。我只是不确定这有多实用。
    • 是的,但是如果您的数据发生更改,则对先前搜索的响应可能已更改,并且缓存的响应可能不再准确。这就是缓存的全部问题,即知道缓存数据是否以及何时过时并将其清除干净。
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2014-02-09
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多