关于缓存的一些思考?

在很多情况中都遇到过缓存,无论是CPU和内存之间的多级缓存,还是程序和数据库之间的本地缓存或者Redis缓存,又或者是Mysql中存储引擎中的Buffer Pool。为什么使用缓存呢?绝大部分都是处理能力和接受能力的不对等。

举个例子,查询数据库

比如说我们写了一段程序要查询数据库数据,会执行这样一个流程。

1.程序执行封装好的方法调用操作系统内核中的方法

2.操作系统内核再去查询数据库,省略数据库部分操作,然后从存储介质磁盘中查询数据,相当于一个本地IO的操作

3.查询完之后,将数据复制到操作系统内核缓冲区中,最后由用户程序从内核缓冲区再次拷贝数据。

其实,从上面流程来看,我们的程序处理起来是非常快的,大部分时间都在等待数据库返回数据到内核缓冲区,进而拷贝到用户内存这个过程中! 那么这就是处理能力和接受能力的不对等!

那有了Redis缓存之后,会通过redis客户端对象调用系统库中的网络请求函数,并且根据对应的协议将数据封装成对应格式的数据包!相比Mysql,Redis无须从磁盘中查询数据,而是直接从本地内存中查询数据到网卡,然后再拷贝到内核缓冲区中!

(是否需要物理网卡,取决于物理存储介质和我们的应用程序服务是否在一个主机上!)
**Q:**Redis中存储数据的内存和我们应用程序所处的内存是一块吗?

A: 不是一块的,我们需要了解进程是操作系统分配资源的基本单位。那应用程序所处的内存就是对应的进程分配到的那片物理空间 ;而Redis中存储数据的内存是Redis进程分配到的那片物理空 间。

**补充:**缓存和多线程搭配就来带来数据一致性问题,再配合分布式的话,就需要考虑CAP,相应的也会出现一系列的分布式问题(分布式session、分布式锁、分布式事务等!)

相关推荐
刃神太酷啦10 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
CDN36013 小时前
CDN 缓存命中率优化实战:解决出海业务回源过多、跨洋延迟高,缓存调优完整指南
缓存·cdn加速
咖啡星人k14 小时前
2026 上下文缓存进阶:把前缀契约写进SPEC,MonkeyCode 云端跑通
人工智能·机器学习·缓存
hweiyu0014 小时前
Redis命令:TTL
redis·缓存
MC丶科17 小时前
软考架构师90天冲刺|DAY44·Redis高级应用
数据库·数据仓库·redis·缓存·oracle·容器·规格说明书
上单带刀不带妹19 小时前
小程序图片缓存问题:时间戳和版本号解决图片不更新
缓存·小程序·vue·uniapp
她说..19 小时前
Redis项目实战整理
数据库·redis·缓存
蓝速科技21 小时前
蓝速科技丨多网点涉外窗口翻译机批量部署实战指南
服务器·数据库·人工智能·缓存·语音识别
努力努力再努力wz1 天前
【Redis入门系列】从 KEYS 到 SCAN:渐进式遍历、Cursor 与位反转原理
数据库·redis·缓存
小宋10212 天前
大模型成本怎么控制:Token统计、缓存与模型路由实战
人工智能·缓存