登录拦截器
第一个拦截器只是确保一切请求都要进行token刷新的大动作
第二个拦截器从ThreadLocal中获取user用户
缓存一致性如何解决
并发情况下发生缓存不一致的问题,主要是因为写数据库和写缓存不是原子的
先写缓存,再写数据库
先写数据库,再写缓存
先删缓存,再写数据库
删缓存很快,写数据库很慢,所以图二不一致情况很容易发生
先写数据库,再删缓存
图二发生的概率不高,因为写入缓存速度比较快,不太可能缓存写入的时候更新数据库
缓存双删机制
使用Canal监听BinLog
缓存问题
缓存穿透
StrUtil.isBlank()里面null、""、\t\n都会返回true,注意从Redis中查询结果后,先判断是否为null、""、\t\n,不是的话说明Redis里面有值,直接拿来用就行,是""的话说明缓存了一个空值,要返回“店面信息不存在!”
缓存雪崩
缓存击穿(热点key问题)
目的是解决缓存重建这段时间的并发问题。
三个问题中,只有缓存击穿是解决多线程并发造成的问题
优惠券秒杀
全局ID生成器
唯一性、高可用、高性能、递增性、安全性
一秒内增加id是要加锁吗