自学内容网 自学内容网

Redis登录校验

登录拦截器

第一个拦截器只是确保一切请求都要进行token刷新的大动作

第二个拦截器从ThreadLocal中获取user用户

缓存一致性如何解决

并发情况下发生缓存不一致的问题,主要是因为写数据库和写缓存不是原子

先写缓存,再写数据库

先写数据库,再写缓存

先删缓存,再写数据库

删缓存很快,写数据库很慢,所以图二不一致情况很容易发生

先写数据库,再删缓存

图二发生的概率不高,因为写入缓存速度比较快,不太可能缓存写入的时候更新数据库

缓存双删机制

使用Canal监听BinLog

缓存问题

缓存穿透

StrUtil.isBlank()里面null、""、\t\n都会返回true,注意从Redis中查询结果后,先判断是否为null、""、\t\n,不是的话说明Redis里面有值,直接拿来用就行,是""的话说明缓存了一个空值,要返回“店面信息不存在!”

缓存雪崩

缓存击穿(热点key问题)

目的是解决缓存重建这段时间的并发问题。

三个问题中,只有缓存击穿是解决多线程并发造成的问题

优惠券秒杀

全局ID生成器

唯一性、高可用、高性能、递增性、安全性

一秒内增加id是要加锁吗 

超卖问题

实现一人一单

将userId作为synchronized的锁,因为一个用户不能买抢多个券,但是多个用户并发的过程中不要让他串行执行

先获取锁,然后再提交事务,才能保证线程安全

集群操作

集群操作中,加了sync锁也会造成并发问题,失效

多个JVM如何使用同一把锁?


原文地址:https://blog.csdn.net/qq_44763553/article/details/142747543

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!