如何设计缓存
背景
随着本公司业务的发展,衍生出的软件产品越来越多,用户体系越来大,用户的访问响应面临着瓶颈,于是采用缓存去解决,但是随着新的架构——分布式的使用,以前的缓存命名以及是否需要变得杂乱,针对目前系统存在的这些问题,提出以下的解决方案
缓存数据域
淘汰的卖家浏览的商品集中在少数成交数多,评价良好的商品上;百度搜索的关键集中在少部分热门词汇上;只用经常登录的用户才会发微博,看微博,而这部分用户也只占总用户数目的一小部分。根据以上案列可以看出,大部分的业务集中在少部分数据上,帕累托法则指出——80%的业务访问集中在20%数据上。由此可见,缓存的数据一般具有两个特点:
一.不经常改动的数据
二.业务访问比较频繁数据
根据以上两点,目前系统中使用缓存的包含下面的模块
1.首页:用户访问频繁,可以刷新
2.用户信息相关:登录时保存用户信息,包含地址等,不可以刷新
3.购物车:不可以刷新
4.产品相关:
产品是系统访问比较频繁的业务数据,主要有两个模块
一.产品分类,不经常动,可以刷新
二.产品原信息:相对于所有产品而言,不会经常改动,只会涉及小部分产品的上架,下架以及价格的变动,可以刷新
5.公共模块:包含配送模式等,不会经常改动,可以刷新
6.促销:促销本身是大流量引入点,会有短时间大流量的可能,应当使用缓存,可以刷新
缓存数据的原则
小模块,易查询,少冗余。尽量不要出现冗余数据
命名规则key
服务名_功能/类型[index1][index2]
缓存模型
Abstract BaseCache{
Protected String Rid;
Protected String cityCode;
}
缓存刷新方案:
缓存刷新原则上应当刷新最小单位
方案1:业务人员上新的业务时,需要刷新缓存
方案2:定时自动化任务加载缓存数据
浙公网安备 33010602011771号