1. 什么是缓存?
可以进行高速数据交换的存储器.
2. 缓存种类:
- web端 => 页面缓存
- 移动端 => App缓存
- 服务端 => 数据库缓存、平台级缓存、应用缓存
2.1 系统级缓存:
(1). 机械硬盘缓存(两部分):
- DDR2缓存:减少硬盘与内存之间做数据交换.
- 闪存.
(2). CPU缓存:
- CPU与内存的一个临时数据交换器: a. 比内存小.交换速度非常快. b. 数字越小越靠近CPU核心,速度也越快,L1是最靠近CPU的. c. CPU查找顺序:L1 -> L2 -> L3 -> 主存.
- L1缓存又分为: a. 数据缓存(L1d Cache) b. 指令缓存(L1i Cache)
(3). 缓存与内存的区别:
```js
缓存 内存
掉电是否丢数据 丢 丢 // 因为存储方式是一样的
物理结构是否相同 部分内存(部分内存复制数据)、缓存框架 一般为物理内存条
部署方式 所在主机、独立部署 所在主机
2.2 应用级缓存:
将数据存储到redis中.用户直接访问redis数据.减少与硬盘的交互.
3. 缓存应用场景?
(1). 什么时候用? 应用的前提是应用抗不住用户的并发量的时候使用.
(2). 场景:
- 将DB的数据加入到缓存
- 列表排序分页等
- 计数器:并发计数、访问计数
- 详情内容数据缓存
- 分布式session: 用户权限session共享
- 热点数据排名: 评价系统、积分排名系统
- 发布订阅
- 分布式锁: 数据库、zookeeper、consul、etcd、redis
4. 容量的限制 - 淘汰机制策略:
保证缓存空间不被占满.
- 先进先出算法(FIFO): 如果一个数据最先进入缓存,则应该最早淘汰掉.
- 最不经常使用(LRU): 判断数据最近使用的时间,时间最远的数据优先被淘汰.
- 最近最少用(LFU): 在一段时间内,数据被使用的次数最少,优先被淘汰.