java微服务重启缓存会被清掉_微服务化后缓存怎么做

本文分析了微服务中遇到的缓存问题,包括店铺数据获取的缓存错误和统计慢SQL导致的性能问题。提出了遵循数据更新频率确定缓存策略、在服务内部控制缓存失效以及预计算逻辑不应暴露给调用方等原则,以解决微服务化后的缓存管理挑战。并提醒注意跨服务调用时的多级缓存一致性问题。
摘要由CSDN通过智能技术生成

摘要

最近接手的代码中遇到几个缓存的问题,存在一些设计原则的问题,这里总结一下,希望可以对你有帮助

问题

问题1: 店铺数据的获取,将用户关注的数据放在店铺信息一起返回

对外提供的接口

List getPageShop(final Query query,final Boolean cache);

返回的店铺信息

public class Shop {

public static final long DEFAULT_PRIORITY = 10L;

/**

* 唯一标识

*/

private Long id;

//省略了店铺其他信息

/**

* 用户关注

*/

private ShopAttention attention;

}

当调用方设置cache为true时,因为有缓存的存在,获取不到用户是否关注的数据。

问题2: 统计店铺的被关注数导致的慢SQL,导致数据库cpu飙高,影响到了整个应用

SQL

SELECT shop_id, count(user_Id) as attentionNumber

FROM shop_attention

WHERE shop_id IN

#{shopId}

GROUP BY shopId

这两种代码的写法都是基于一个基准

不同的地方的缓存策略不一样,比如我更新的地方,查找数据时不能缓存,页面展示的查找的地方需要缓存。 既然服务提供方不知道该不该缓存,那就不管了&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值