如何设计缓存

背景

随着本公司业务的发展,衍生出的软件产品越来越多,用户体系越来大,用户的访问响应面临着瓶颈,于是采用缓存去解决,但是随着新的架构——分布式的使用,以前的缓存命名以及是否需要变得杂乱,针对目前系统存在的这些问题,提出以下的解决方案

缓存数据域

淘汰的卖家浏览的商品集中在少数成交数多,评价良好的商品上;百度搜索的关键集中在少部分热门词汇上;只用经常登录的用户才会发微博,看微博,而这部分用户也只占总用户数目的一小部分。根据以上案列可以看出,大部分的业务集中在少部分数据上,帕累托法则指出——80%的业务访问集中在20%数据上。由此可见,缓存的数据一般具有两个特点:

一.不经常改动的数据

二.业务访问比较频繁数据

根据以上两点,目前系统中使用缓存的包含下面的模块

   1.首页:用户访问频繁,可以刷新

   2.用户信息相关:登录时保存用户信息,包含地址等,不可以刷新

   3.购物车:不可以刷新

   4.产品相关:

     产品是系统访问比较频繁的业务数据,主要有两个模块

一.产品分类,不经常动,可以刷新

二.产品原信息:相对于所有产品而言,不会经常改动,只会涉及小部分产品的上架,下架以及价格的变动,可以刷新

   5.公共模块:包含配送模式等,不会经常改动,可以刷新

 6.促销:促销本身是大流量引入点,会有短时间大流量的可能,应当使用缓存,可以刷新

 缓存数据的原则

小模块,易查询,少冗余。尽量不要出现冗余数据

命名规则key

  服务名_功能/类型[index1][index2]

  缓存模型

Abstract BaseCache{

   Protected  String Rid;

   Protected  String cityCode;

}

缓存刷新方案:

 缓存刷新原则上应当刷新最小单位

方案1:业务人员上新的业务时,需要刷新缓存

方案2:定时自动化任务加载缓存数据

posted @ 2018-06-08 09:21  打打球,写程序  阅读(45)  评论(0)    收藏  举报