大家好,我是方圆
。这篇写的是秒杀活动、商品在执行发布、上线和下线操作时对缓存的更新,对应分支是increase_refresh_cache
,源码以该分支为准。
本篇将对获取缓存的方法参数进行更改,并且对单条和列表缓存的key添加前缀,以上两处改动都是为了方便缓存的更新。
前缀 + ID
的格式,列表缓存为前缀 + QueryCondition的toString字符串
格式为什么要这么改?
区分
开,并且列表缓存有了前缀之后,可以进行模糊匹配删除
。因为列表缓存的更新是上述修改操作
发生之后全部进行清除,我没有想到更好的对列表缓存的更新措施,因为目前无法确定在操作某一条数据时,列表缓存中是否存在该条数据,所以只能进行全部清除,除非,能想到更好的方法…缓存更新流程图如下,以秒杀活动为例(秒杀商品缓存的更新与此相似)
注意这里我们采用的是借助本地事件处理器,alibaba.cola.event
包下的事件处理器,同《高并发秒杀的设计精要与实现》中介绍的方法一致,发生如图上事件时对缓存进行更新。