java - 如何实现缓存系统?
问题描述
我正在开发一个 Web 应用程序,其中在 Spring Boot 中开发的后端使用来自公共 API 的数据,该 API 以 JSON 格式返回数据。搜索是通过术语、全文(如谷歌)完成的,后端从应用程序前端接收到用户的查询,然后搜索公共 API,等待响应,处理信息并将其发送到前端. 我想在后端实现缓存系统,Spring Boot。基本上,在 Spring Boot 调用 API 发布并等待响应之前,它会检查键/值系统是否过去已经完成搜索,如果是,则返回键值中的内容.
缓存系统:
- 键:搜索条件,值:带有 API 公共响应的 json。
- 它必须持久化数据,而不是易失性。
- 它必须是键值搜索(缓存)。
- 它必须由更新缓存数据的系统以外的系统更新,验证数据是否在基础(公共 API)中更改。
最初我想使用 NoSQL 数据库,例如 mongoDB。但是经过更好的调查,我遇到了 Redis。你认为什么是最好的?
我想问一些建议来实现这个架构。我不确定如何实现它,我怀疑 Redis 或 MongoDB 或其他。
谢谢。
解决方案
由于搜索词的不同形式,我不确定缓存在这种情况下会对您有多大帮助。
如果您需要保护后端免受同一查询的多次执行,您可以使用Spring Cache。它支持包括 Redis 在内的不同提供者,并具有驱逐机制
推荐阅读
- c# - 当 XML 具有多个同名元素时,如何将其表示为类
- r - 在 ShinyApp 中使用下载处理程序下载数据时出现问题
- android - Firebase Api Key 可用于其他应用程序(反编译的 APK)
- c# - 在 C# 中创建一副纸牌
- sql - 如何在 datetime SQL 列中按日期和 8 小时间隔对这些日期进行分组和计数?
- regex - 替换给定 unicode 字符串中的所有表情符号
- sql - SQL旧数据卡住并导致错误
- javascript - 为什么 document.execCommand(''backColor'') 不适用于 css 变量,而 foreColor 可以?
- c# - Visual Studio 2017 UnitTest 未运行
- amazon-web-services - 默认为安全组的计算值不起作用