项目中缓存的使用

项目中的缓存是怎么使用的?

经典的电商项目都喜欢将导航栏,菜单栏,三级分类菜单数据放到redis缓存中,因为这些数据往往在用户访问的时候都能访问到,如果大量用户都去访问数据库会造成数据库访问压力,甚至宕机,而缓存基于内存,天生就支持高性能高并发,所以我们会将这些用户经常能访问到的数据都放到redis缓存中。

为什么要使用缓存?

一般情况下我们的项目里面基本上不会有高并发的场景,有些复杂查询的场景需要将数据放到缓存中,后续会大幅度提升访问性能,提升用户体验。

用了缓存会有什么不良的后果?

  • 缓存与数据库双写不一致

数据库里面的数据更新过后不及时更新到缓存会导致用户获取到缓存中的数据与数据库中不同步。

  • 缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大

  • 缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据。这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。

  • 缓存雪崩

缓存雪崩是指缓存数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库。

  • 缓存并发竞争

如果本文对你有所帮助,请赏我1个铜板买喵粮自己吃,您的支持是我最大的动力!!!