java - 缓存系统如何实现?

标签 java spring spring-boot caching architecture

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

缓存系统:

  • 键:搜索词,值:带有 API 公共(public)响应的 json。
  • 它必须持久保存数据,而不是 volatile 。
  • 它必须是键值搜索(缓存)。
  • 它必须由除所描述的更新缓存数据的系统以外的系统进行更新,以验证基础数据是否已更改(公共(public) API)。

最初我想到使用NoSQL数据库,比如mongoDB。但经过深入研究,我发现了Redis。你认为什么最好?

我想询问一些实现此架构的建议。我不知道如何实现它,我怀疑 Redis 或 MongoDB 或其他。

谢谢。

最佳答案

由于搜索词的形式不同,我不确定缓存在这种情况下会对您有多大帮助。

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

关于java - 缓存系统如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53692576/

相关文章:

Spring Boot 返回字符串而不是 View

java - Spring JDBC 抛出 java.lang.NoSuchMethodError : org. hibernate.Session.connection()Ljava/sql/Connection;

java - 如何正确使用MockMvc在Junit中测试post方法?

java - Spring Boot 应用程序因未知原因崩溃

java - 如何编写更新嵌入文档的查询

java - ConcurrentModificationException 从迭代器中删除元素

java - 从 R.raw 文件夹中打开文件

java - 如何配置 spring boot 应用程序以在 MySQL 上使用 SSL/TLS?

基于 Web 的 CSV 导出的 Java IO 异常

java - Netbeans 项目引用问题