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

一、为什么要用缓存

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

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

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

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

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

四、缓存可能存在的问题

  1. 缓存与数据库双写不一致
  2. 缓存雪崩
  3. 缓存穿透
  4. 缓存并发竞争
相关推荐
a诠释淡然2 分钟前
C++ vs Rust:哪个更适合你的下一个项目?
开发语言·c++·rust
创可贴治愈心灵2 分钟前
AI浪潮下C#就业前景剖析:深耕C#为主,按需选修Java与Python
java·人工智能·c#
meilindehuzi_a4 分钟前
深入理解 JavaScript 执行机制:从编译阶段到调用栈底层实现
开发语言·javascript·ecmascript
小小de风呀5 分钟前
de风——【从零开始学C++】(十二):stack和queue的基本使用和模拟实现
开发语言·c++
huohaiyu16 分钟前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
YsyaaabB30 分钟前
LangChain作业二---多语言翻译Prompt
开发语言·python·langchain
SunnyDays101131 分钟前
如何在 Java 中实现 OFD 与 PDF 格式互转
java·开发语言
keykey6.41 分钟前
用 PyTorch 训练图像分类器:完整实战
开发语言·人工智能·深度学习·机器学习
雪度娃娃42 分钟前
转向现代C++——保证const成员函数的线程安全性
开发语言·c++
Trouvaille ~1 小时前
【Redis篇】Redis 主从复制:数据同步的原理与实现
数据库·redis·缓存·中间件·高可用·主从复制·后端开发