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

摘要

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

问题

问题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

你可能感兴趣的:(java微服务重启缓存会被清掉)