String value = redisService.get(key); if(StringUtil.isEmpty(value)) { //封装的tryDistributedLock包括setnx和expire两个功能,在低版本的redis中不支持 try{ booleanlocked = redisService.tryDistributedLock(jedis, lockKey, uniqueId, expireTime); if(locked) { value = userService.getById(key); redis...
问题:先修改数据库,再删除缓存,如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据出现不一致 解决思路: 先删除缓存,再修改数据库。如果删除缓存成功,修改数据库失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致,如果删除缓存失败不执行修改数据库(cache aside pattern) 2.2、比较复...