缓存架构的设计思路:
多层次
分布式缓存宕机,本地缓存还可以使用
数据类型
简单数据类型
Value是字符串或整数或二进制
Value的值比较大(大于100K)
只进行setter和getter
可采用Memcached
Memcached纯内存缓存,多线程 K-V
复杂数据类型
Value是hash、set、list、zset
需要存储关系,聚合,计算
可采用Redis
要做集群
分布式缓存集群方案(Redis)
codis
哨兵+主从
RedisCluster
缓存的数据结构设计
与数据库表一致
数据库表和缓存是一一对应的
缓存的字段会比数据库表少一些
缓存的数据是经常访问的
用户表,商品表
与数据库表不一致
需要存储关系,聚合,计算等
比如某个用户的帖子、用户的评论
数据回填
从服务中读取数据时,先读取Redis集群的缓存,如果缓存命中则直接返回。
如果缓存不命中则返回本地缓存,不能直接读取数据库。
采用异步的形式从数据库刷入到缓存中。
热点策略
对于热点数据我们采用本地缓存策略,而不采用服务熔断策略,因为首页数据可以不准确,但不能不响应。