最近会员中心拼团中一个查询接口做了缓存,使用到spring cache框架。在用户状态变更的时候,清除用户的缓存cache。但是实际结果是数据库状态变了,但是缓存状态并没有清除,
结果出现缓存不一致的问题。具体如下:
@CacheEvict(value = "groupUserCached", key = "'user_status_' + #userId")
public void removeGroupUserStatusCached(long userId) {
logger.info("removeGroupUserStatusCached, userId is {}", userId);
}
/**
* 支付成功新客变老客
* @param userId
*/
public void updateUserStatusToOld(Long userId){
GroupUserDO groupUserDO = new GroupUserDO();
groupUserDO.setUserId(userId);
groupUserDO.setStatus(GroupUserStatus.OLD_USER.getStatus());
int result = groupUserDao.updateStatusByUserId(groupUserDO);
if(result > 0){
this.unLockGroupUser(userId);
this.removeGroupUserStatusCached(userId);
logger.info("【新客变老客】会员状态更新成功, userId:{}", userId);
}else{