【退役之重学Java】关于缓存

一、为什么要用缓存

缓存嘛,对比计算机组成原理中的"高速缓存控制器",就可以知道,缓存的存在是为了获取高性能,特别是在高并发场景下获取高性能。

二、缓存是如何获取高性能的

  1. SQL的执行是非常消耗性能的
  2. 有一些SQL经常是一样的,返回一样的结果
  3. 那么重复地去数据库中执行这些SQL,就显得不必要
  4. 这时,可以设置缓存,将此类相同的SQL,以及其查询结果存放在缓存中
  5. 那么理论上,只要数据库中的数据没有改变,就可以直接从缓存中获取数据,而不用去数据库执行SQL
  6. 所以,就减轻了数据库的负担,增加了系统的性能,减少了用户等待时间,提高了用户使用体验感
  7. 如果数据库的数据发生变化,在修改数据库中的数据同时,把缓存中的数据也做相应修改(当然,根据不用的业务场景和需求,可以采用不同的修改策略)

三、缓存是如何实现高并发的

  • 缓存用的是内存,内存的读写速度很快,所以能极大的提高性能
  • 采用并发控制访问、缓存分片、缓存集群、缓存策略优化、缓存预热、缓存监控和调优等设计和方法,以实现对高并发的支持

四、缓存可能存在的问题

  1. 缓存与数据库双写不一致
  2. 缓存雪崩
  3. 缓存穿透
  4. 缓存并发竞争
相关推荐
晨旭缘1 分钟前
后端日常启动及常用命令(Java)
java·开发语言
CodeAmaz1 分钟前
ArrayList 底层原理
java·arraylist
山峰哥2 分钟前
3000字深度解析:SQL调优如何让数据库查询效率提升10倍
java·服务器·数据库·sql·性能优化·编辑器
iAkuya3 分钟前
(leetcode)力扣100 35 LRU 缓存(双向链表&哈希)
leetcode·链表·缓存
tkevinjd3 分钟前
JUC2(多线程中常用的成员方法)
java
天天摸鱼的java工程师9 分钟前
工作中 Java 程序员如何集成 AI?Spring AI、LangChain4j、JBoltAI 实战对比
java·后端
星辰_mya9 分钟前
RockerMQ之commitlog与consumequeue
java·开发语言
__万波__10 分钟前
二十三种设计模式(二十二)--策略模式
java·设计模式·策略模式
꧁Q༒ོγ꧂10 分钟前
C++ 入门完全指南(六)--指针与动态内存
开发语言·c++
不想上班的小吕10 分钟前
采购申请创建(BAPI_PR_CREATE/BAPI_REQUISITION_CREATE)
java·服务器·数据库