微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在单个请求 ID 级别缓存,其中 API 请求针对不同的 RequestId 集

如何解决在单个请求 ID 级别缓存,其中 API 请求针对不同的 RequestId 集


我有一个需求,其中对产品 API 的请求将具有多个产品 ID,并且每个请求的请求中的这组 Id 可以不同。

鉴于这个场景,如果我需要缓存以产品Id为key的产品数据,是否可以使用Spring Cache?

例如:

Request1 - prod1,prod2,prod3,.... 缓存创建 - {prod1=D1,prod2=G1,prod3=B3}

Request2 - prod4,prod5,....

prod2 - 从缓存和 使用 prod4 和 prod5 的新数据集更新缓存

请注意,我们无法为产品服务进行单一 API 调用。一种方法是不使用 spring 缓存,而是构建如下信息的 Map。

Map productCategoryMap;
getProductCategories(列出产品){
//当productCategoryMap中找不到数据时,从缓存和/或加载的缓存中返回数据
}
loadProductCategories(List products);

评论您对问题陈述的看法以及可能的实施方法

谢谢。

解决方法

番石榴缓存适合作为此用例的最佳解决方案。 我使用 loadAll(..) 获取产品 ID 列表。

这里的问题是 getAll(..) 在没有找到给定产品 ID 的数据时失败/抛出异常,这可以通过捕获异常然后调用 getAllPresent(..) 来处理

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。