一、Redis为什么快?
基于内存
单线程减少上下文切换
io多路复用,一个线程监听多个客户端网络IO
二、缓存雪崩、穿透、缓存击穿
雪崩:
原因:大量数据同时过期
解决:分散过期时间,数据预热,热点缓存数据避过流量高峰期
穿透:
原因:数据库没有对应的数据,空查询
解决:缓存null值,也可以添加布隆过滤器
缓存击穿:
原因:缓存失效后大部分请求直接打在数据库
解决:定时更新,设置热点数据永不过期,互斥锁
三、Redis的持久化机制有几种,分别的作用
1、AOF(增量备份)
优点:数据丢失风险降到最低,数据保持是最新的
缺点:文件体积比RDB大上很多,恢复数据比较慢
2、RDB(全量备份)
优点:使用单独子进程来持久化,保证了Redis的高性能,存储方式是压缩的二进制文件,适用于备份
缺点:RDB是间隔一段时间持久化一次,如果持久化之前的数据出现故障,则会丢失数据
四、过期删除策略
定时删除
添加RedisKey时设置一个过期时间,到期自动删除,对内存很友好,但是会展东大量的CPU资源
惰性删除
当访问key时,查看她有没有过期,过期则删除,可以大大节省CPU得消耗,会占用大量内存
定期删除
每隔一段时间对一些key检查,删除其中过期的key
Redis是惰性删除+定期删除
五、
Redis的集群有哪些
1、主从复制
优点:
主机会自动将数据同步到从机,可以进行读写分离
主节点宕机,从节点可以顶上去
缺点:
主机宕机,宕机前有数据没有同步到从机,切换从机ip的时间可能会导致数据不一致问题
Redis不具备自动容错和恢复功能,主机从机宕机都会导致前端部分读写请求失败,需要等待
机器重启或者手动切换ip才能恢复
Redis较难支持在线扩容,对于集群。容量达到上限时在线扩容会变得很麻烦
2、哨兵模式
优点:哨兵模式是基于主从模式的
主从可以自动切换,系统更健壮,可用性更高
缺点
Redis较难支持在线扩容,对于集群。容量达到上限时在线扩容会变得很麻烦
3、Cluser集群模式
Cluster模式通过无中心化架构,实现分布式存储,可进行线性扩展,也能高可用,但对于像批量操作、事务操作等的支持性不够好。