1.什么是缓存?
2.使用redis作为mysql的缓存

- 因为 mysql 等数据库,效率比较低,所以承担的并发量就有限.一旦请求数量多了,数据库的压力就会很大,甚至很容易就宕机了
- 服务器每次处理一个请求,一定都要消耗一些硬件资源(cpu, 内存, 硬盘, 网络...)任意一种资源的消耗超出了机器能提供的上限,机器就很容易出现故障了.
- 如何提高 mysql 能承担的并发量?(客观需求)
- 1.开源: 引入更多的机器, 构成数据库集群,
- 2.节流: 引入缓存, 就是典型的方案,把一些频繁读取的热点数据,保存到缓存上
后续在查询数据的时候,如果缓存中已经存在了,就不再访问 mysql 了 
3.缓存更新策略
1) 定期⽣成
每隔⼀定的周期(⽐如⼀天/⼀周/⼀个⽉), 对于访问的数据频次进⾏统计. 挑选出访问频次最⾼的前 N% 的数据.
以搜索引擎为例.
⽤⼾在搜索引擎中会输⼊⼀个 "查询词", 有些词是属于⾼频的, ⼤家都爱搜(鲜花, 蛋糕, 同城交
友, 不孕不育...). 有些词就属于低频的, ⼤家很少搜.
搜索引擎的服务器会把哪个⽤⼾什么时间搜了啥词, 都通过⽇志的⽅式记录的明明⽩⽩. 然后
每隔⼀段时间对这期间的搜索结果进⾏统计 (⽇志的数量可能⾮常巨⼤, 这个统计的过程可能
需要使⽤ hadoop 或者 spark 等⽅式完成). 从⽽就可以得到 "⾼频词表" .
这种做法实时性较低. 对于⼀些突然情况应对的并不好.
⽐如春节期间, "春晚" 这样的词就会成为⾮常⾼频的词. ⽽平时则很少会有⼈搜索 "春晚"
2) 实时⽣成
先给缓存设定容量上限(可以通过 Redis 配置⽂件的 maxmemory
参数设定).
接下来把⽤⼾每次查询:
•
如果在 Redis 查到了, 就直接返回.
•
如果 Redis 中不存在, 就从数据库查, 把查到的结果同时也写⼊ Redis.
如果缓存已经满了(达到上限), 就触发缓存淘汰策略, 把⼀些 "相对不那么热⻔" 的数据淘汰掉.
按照上述过程, 持续⼀段时间之后 Redis 内部的数据⾃然就是 "热⻔数据" 了.
通⽤的淘汰策略主要有以下⼏种:
下列策略并⾮局限于 Redis, 其他缓存也可以按这些策略展开.
FIFO (First In First Out) 先进先出
把缓存中存在时间最久的 (也就是先来的数据) 淘汰掉.
LRU (Least Recently Used) 淘汰最久未使⽤的
记录每个 key 的最近访问时间. 把最近访问时间最⽼的 key 淘汰掉.
LFU (Least Frequently Used) 淘汰访问次数最少的
记录每个 key 最近⼀段时间的访问次数. 把访问次数最少的淘汰掉.
Random 随机淘汰
从所有的 key 中抽取幸运⼉被随机淘汰掉.


4.缓存使用注意事项
5.小结
1.缓存基本概念
2. 如何使用 redis 作为缓存
3.缓存更新策略 =>redis 内存淘汰机制,
4. 缓存使用的注意事项 [重点]