【问题标题】:How to implement caching system?如何实现缓存系统?
【发布时间】:2019-05-10 13:55:45
【问题描述】:

我正在开发一个 Web 应用程序,其中在 Spring Boot 中开发的后端使用来自公共 API 的数据,该 API 以 JSON 格式返回数据。 搜索是通过术语、全文(如谷歌)完成的,后端从应用程序前端接收到用户的查询,然后搜索公共 API,等待响应,处理信息并将其发送到前端. 我想在后端实现缓存系统,Spring Boot。 基本上,在 Spring Boot 调用 API 发布并等待响应之前,它会检查键/值系统是否过去已经完成搜索,如果是,则返回键值中的内容.

缓存系统:

  • 键:搜索条件,值:带有 API 公共响应的 json。
  • 它必须持久化数据,而不是易失性。
  • 它必须是键值搜索(缓存)。
  • 它必须由更新缓存数据的系统以外的系统进行更新,验证数据是否在基础(公共 API)中发生更改。

最初我想使用 NoSQL 数据库,例如 mongoDB。但是经过更好的调查,我遇到了 Redis。你认为什么最好?

我想就实施此架构提出一些建议。我不确定如何实现它,我怀疑 Redis 或 MongoDB 或其他。

谢谢。

【问题讨论】:

  • 了解通过缓存写入。是的,将搜索结果存储在缓存中以获得更低延迟的 API 是个好主意。 Redis 是一个不错的选择,因为它非常耐用,并且支持各种价值格式。 Redis 是分布式的,这也将帮助您水平扩展并从最近的服务器向客户端发送响应。
  • 你读过 Hazelcast 吗?我认为这对您的情况来说是更好的解决方案

标签: java spring spring-boot caching architecture


【解决方案1】:

您可以使用 MemCache。它已经为缓存做好了准备。

【讨论】:

    【解决方案2】:

    我不确定缓存在这种情况下是否会对您有很大帮助,因为搜索词的形式不同。

    如果您需要保护您的后端免受同一查询的多次执行,您可以使用Spring Cache。 它支持包括 Redis 在内的不同提供程序,并拥有evict mechanism

    【讨论】:

    • 最大的问题是公共API响应慢。目前访问数量将很低。但是为我提供数据的公共 API 需要很长时间,有时会超过最大限制。缓存是一种减少对公共 API 依赖的方法。有什么建议可以减少对公共 API 的依赖?
    • 自行构建或寻找其他供应商。缓存可能会起作用,但我们对您的情况了解得不够多,无法提供好的建议(对于 Stack Overflow 来说太宽泛了)。
    猜你喜欢
    • 2019-02-22
    • 1970-01-01
    • 2021-11-28
    • 2013-10-04
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多