简单来说: 乐观锁就像“先干活后检查”,比如用版本号或CAS(比较并交换)的方式,在更新数据时才验证有没有冲突,适合冲突少的场景,不需要真正加锁。 悲观锁则是“先加锁再干活”,直接给数据上锁,确保自己操作时别人不能改,适合必须强一致的场景,但可能影响性能。 缓存三剑客问题: - 穿透:大量查不存在的数据,打穿缓存到数据库。用布隆过滤器先过滤无效请求。 - 击穿:热点数据过期瞬间,大量请求同时打到数据库。用互斥锁(如Redis的setnx)保证同一时间只有一个请求查数据库。 - 雪崩:大量缓存同时失效,请求压垮数据库。用多级缓存(比如本地+Redis)、给不同数据设置随机过期时间(TTL)来分散压力。
点赞 评论

相关推荐

牛客网
牛客企业服务