Redis面试相关
数据过期策略
惰性删除
当用到那个key的时候再检查是否过期,过期则删除,有效则返回key
优点是可以节省检查过期的时间 缺点是会浪费内存
定期删除
每隔一段时间对一些key进行检查并且删除里面的过期key
有两种模式
slow模式是定时任务,频率是10HZ,执行时间不超过25ms,可以通过配置文件调整频率
fast模式执行频率不固定,每次间隔不低于2ms,执行时间不超过1ms
Redis是惰性删除加定期删除都使用
8种内存淘汰策略
集群模式:
主从复制
哨兵模式
分片集群
主从复制中数据同步的流程
全量同步:主节点通过replicationid判断是不是第一次同步,如果是第一次同步需要进行一次bgsave生成rdb文件进行同步,然后把生成的rdb文件传输给从节点,rdb期间执行的命令会记录在日志文件中。
增量同步(slave重启或者后期数据变化):如果不是第一次同步就读从库传给主库的offset后的命令。
redis是单线程的为什么还那么快
redis是纯内存操作,执行速度非常快
采用单线程避免不必要的上下文切换,多线程还要考虑线程安全问题
采用I/O多路复用模型,非阻塞IO
解释一下I/O多路复用模型
redis是纯内存操作性能瓶颈是网络延迟而不是执行速度,I/O多路复用模型就实现了高效的网络请求
redis作为缓存数据的持久化是怎么做的呢