区别
缓存 数据可丢失 存取速度快
数据库 数据绝对不能丢,速度 + 持久化
缓存
1 击穿
缓存击穿:少量缓存数据失效,访问直接到达数据库
2 穿透
缓存中不存在用户请求数据,请求直接到达数据库
3 雪崩
缓存中数据大量过期失效,大量访问直接到达数据库(雪崩分为两种情况:时点性有关 和时点性无关)
时点性有关------即到时间点缓存必须失效,如0点数据清零,重新初始换数据,此时可以延迟用户访问;
时点性无关-----即缓存大面积失效,需要考虑如何限流或者熔断。思考
redis里的数据怎么能随着业务变化,只保留热数据,因为内存大小式有限的,也就是瓶颈
key 有效期
1,会随着访问延长?不对!!
2,发生写,会剔除过期时间
3,倒计时,且,redis不能延长
4,定时
5,业务逻辑自己补全淘汰冷数据
内存多大呢?
maxmemory <bytes>
maxmemory-policy noeviction
淘汰策略:1: LFU 碰了多少次; 2:LRU 多久没碰他
持久化(数据库)
快照/日志
Redis持久化策略
- RDB
时点性
save(时点可能会混乱,使用场景:停机落数据)
bgsave (fork创建子线程,时点不会混乱)
优点:
类似java中的序列化恢复的速度相对快
缺点
1 不支持拉链只有一个dump.rdb
2 丢失数据相对多一些,时点与时点之间窗口数据容易丢失
如:8点得到一个rdb,9点刚要落一个rdb,挂机了- AOF
AOF: redis的写操作记录到文件中
优点
1 丢失数据少
2 redis中,RDB和AOF可以同时开启,如果开启了AOF只会用AOF恢复
缺点
1 体量无线变大 》 恢复慢
优点如果能保住,还是可以用的,可以设计一个方案让日志AOF足够小
网友评论