1、哪些数据适合放入缓存?
- 即时性、数据一致性要求不高的
- 访问量大且更新频率不高的数据(读多,写少)
2、本地缓存
1、本地缓存,如果是单体项目,部署到一台服务器上,就不存在什么问题,如果项目是以分布式的方式部署的话,就存在问题了,就是每台服务器里面都自带一个本地缓存。
2、分布式缓存-本地模式在分布式下的问题
存在两个问题:
1)在分布式查询时,每次查询的服务器可能不同,而本地缓存只负责本台服务器的缓存,这样就会导致当请求路由到不同的服务器时,都需要先查询本地缓存,如果缓存没有,再去查询数据库,这样的操作同样会操作多次数据库。
2)如果某一个数据发生变化,例如A服务器,那么就会修改A服务器的缓存数据,但是下次再请求查询时可能会路由到B服务器,但是B服务器的本地缓存中的数据还是原来的脏数据,就会导致数据不一致的问题。
3、分布式缓存的正确使用姿势
使用缓存中间件的好处:
1)数据集中管理
2)当缓存数据量增大时,缓存中间件可以扩容【做集群】,数据可分片存储,打破了本地缓存的容量限制,实现高可用
3、整合Redis
1、整合步骤:
1)引入data-redis-stater依赖;
2)简单配置redis的host,password等信息;
3)使用SpringBoot自动配置好的StringRedisTemplate来操作Redis;
2、实际项目使用
4、压力测试
1、会产生堆外内存溢出:OutOfDirectMemoryError