spring cache(四)cache版本管理
总结
1、项目级别cache version
2、表级别cache version
一、项目级别cache version
我们需要为整个项目的cache keys加个version方便管理。
二、表结构变更cache问题
不要修改或删除cache或db的Entity里面的字段,否则可能导致业务异常。
1、修改字段
如需修改字段,则新增一个字段,并在原字段上加@Deprecated注解;
2、删除/新增字段
DB表结构发生变更时,所有的缓存都是脏数据了,应该变更Repository类名上CacheConfig注解的cacheNames,比如加版本号或者前后缀之类,达到废弃原缓存的目的。
三、新老代码切换导致的cache问题
1、操作步骤
(1)开发升级cache version
如上,我们有表级别的cache version。如老代码有个cache key是mydemo:0:t_user:0:getById:abc = zs;
新代码升级了version为t_user:1;
(2)新代码部署
页面操作,并存入mydemo:0:t_user:1:getById:abc = ww;
(3)代码回滚
因特殊原因回滚到老代码,刷新页面,如果old cache key过期了重新从db读取-》存入缓存,没有问题;
如果old cache key没有过期,读取的是mydemo:0:t_user:0:getById:abc;
则存在兼容性问题。