缓存介绍
- 作用
- 减小数据库的访问压力, 提高并发能力
- 多级缓存
缓存粒度
- 缓存某个数值
- 一个键只保存一个值, 性价比较低, 使用率低
- 场景 验证码
- 缓存数据对象
- 数据库记录对应的具体数据
- 优点 可以多次复用
- 场景 用户/文章数据
- 缓存数据集合
- 数据库查询对应的结果集
- 场景 文章/关注列表
- 可以和数据对象配合使用, 方便数据对象的重用
- 缓存视图响应
- 视图返回的响应数据
- 缺点 复用性比较差
- 项目中主要对 数据集合+数据对象 进行缓存, 优点 复用性强, 节省内存
数据格式 (重点)
- 数值
- 类型 string
- 数据对象
- hash
- 可以直接更新某个字段, 不需要格式转换
- 占用的空间比较多
- 结构化string (json字符串)
- 更新字段需要进行转换
- 占用的空间小
- 头条项目中优先使用结构化string
- hash
- 数据集合
- 键
article:top:30
/md5("select * from t_arcitle order by(create_time) desc limit 30;")
- 值 list/zset/set/hash/结构化string
- list
- 有遍历的需要
- zset
- 有排序的需要
- set
- 有判断是否存在的需要
- hash
- 需要记录字段, 空间占用多
- json字符串
- 节省空间
- 头条项目中主要使用了
json字符串
和zset
的形式
- 键
- 视图响应
- string
- 键 请求URL
- 值 响应结果对应的字符串 前端渲染json字符串/后端渲染html字符串