缓冲击穿
缓存崩溃意味着缓存中没有用户请求的数据,但数据库中有用户请求的数据。此时,如果有许多并发用户可以t通过缓存获取数据,只能从数据库获取数据,导致数据库压力瞬间增大,系统访问变慢。
缓存雪崩
缓存雪崩是指大量缓存数据同时过期。这时候大量的访问导致数据库压力剧增,进而宕机。
缓存雪崩和缓存崩溃的区别在于,缓存雪崩是指大量数据到期,缓存崩溃是指单个缓存数据到期。
本质原因是系统设计时缓存系统的设计不合理。
对于热点数据,可以考虑设置为永不过期,手动处理热点数据。
缓存数据的失效时间随机设置,避免大量缓存数据同时失效。
您可以考虑以分布式配置缓存。
如果事实证明不是内存溢出,而是程序的正常需要,可以考虑把需要的数据放到redis中,而不是存储在java程序的变量中。
这样可以大大降低内存消耗,方便程序的集群部署和数据共享。