简介
相信小伙伴们在实际的开发中都使用过缓存, 但你真的明白缓存吗? 我认为多数小伙伴都未对缓存融会贯通, 这也是我写这篇文章的原因.
数据库的数据状态
这里假设数据库存储的数据为集合A, 那么数据库的数据状态就包含两点:
- 存储数据集合A
- 未存储集合A的补集.
缓存的作用
缓存就是缓存数据库的数据状态,来减轻数据库的查询压力.这里需要注意的是缓存数据库的状态是手段, 减轻数据库的查询压力是目的.
缓存的正确姿势
- 对于每次走数据库的查询,均要缓存查询key和result,若result不存在则缓存空字符串. 避免缓存穿透
- 每次查询数据库,对于查询数据库的key需加redis超时锁, 加锁成功失败均需要查询缓存, 查询不到且有锁的查询数据库并回写缓存. 避免缓存击穿
- 缓存服务需高可用, 且缓存不设超时时间, 使用最近使用时间来淘汰缓存. 避免缓存雪崩
网友评论