一.为什么Redis需要把所有数据放到内存中?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以Redis具有快速和数据持久化的特性。
如果不将数据放到内存中,磁盘IO速度会严重影响Redis的性能。在内存越来越便宜的今天,Redis将会越来越受欢迎。如果设置了最大使用内存,则数据已有记录达到内存限值后不能继续插入新值。
二.Redis的同步机制是什么?
Redis 可以使用主从同步班,从从同步。
第一次同步时,主节点做一次bgsave,并同时将后续操作记录到内存buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。
加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步的全过程。
三.Pipeline有什么好处,为什么要用pipeline?
可以将多次IO往返的时间缩减为一次,前提是pipeline执行的指令之间没有因果相关性。使用redis-benchmark进行压测的时候可以发现影响redis的QPS峰值的一个重要因素是pipeline批次指令的数目。
四.是否使用过Redis集群,集群的原理是什么?
1.Redis Sentinal 定位高可用,在master宕机时会自动将slave提升为master,继续提供服务。
2.Redis Cluster着眼于扩展性,在单个Redis内存不足时,使用Cluster进行分片存储。
五.Redis集群方案什么情况下会导致整个集群不可用?
有A,B,C