Redis面试题(四)

  1. Redis和Redisson有什么关系?
    答:Redisson是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象如Bloom filter,BitSet等。

  2. Redis的内存用完了会发生什么?
    答:如果设置给Redis的内存用完了,那么写命令就会返回错误信息,不过读命令还是可以正常运行的。不过我们如果设置了淘汰策略,内存达到上限的话,就会按照配置的淘汰策略把旧的内容给清除掉。

  3. Redis有哪几种数据淘汰策略?
    答:
    volatile-lru:从设置了过期时间的数据集合的键中挑选最近最少使用的数据淘汰。
    volatile-ttl:从设置了过期时间的数据集合的键中挑选将要过期的数据淘汰。
    volatile-random:从设置了过期时间的数据集合的键中选择任意数据淘汰。
    allkeys-lru:从整个数据集合的键中挑选最近最少使用的数据淘汰。
    allkeys-random:从整个数据集合的键中选择任意数据淘汰。
    no-enviction(驱逐):禁止驱逐数据,也就是永不回收数据,所以再添加数据就会报错。

  4. 说说Redis过期键的删除策略?
    答:
    定时删除:在设置键的过期时间的同时,创建一个定时器 timer。让定时器在键的过期时间来临时,立即执行对键的删除操作。
    惰性删除:不主动删除过期键,但是每次获取键时,都会检查下这个键是否过期了,过期了就删除这个键,没过期才返回。
    定期删除:定期检查Redis库里的所有键,有过期的则删除,至于一次性删除多少键,以及要检查多少个Redis库,则根据业务需求定。

  5. 说说淘汰策略的使用规则?
    答:如果缓存里的数据是一部分访问频率高,一部分访问频率低,则可以选择使用allkeys-lru淘汰策略。如果缓存里的数据访问频率基本相同,则可以选择使用allkeys-random淘汰策略。

  6. Redis集群的原理是什么?
    答:Redis Sentinal(哨兵)主要是为了实现高可用,在master宕机时会自动将slave提升为master,然后继续提供服务。而Redis Cluster主要是为了实现扩展性,在单个redis服务内存不足的情况下,可以使用Cluster把数据做分片存储。

  7. 说说Redis的同步机制?
    答:Redis可以使用主从同步,从从同步。第一次同步时,主节点做一次bgsave, 并同时将后续修改操作记录到内存buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。

  8. 说说Redis哈希槽的概念?
    答:Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置在哪个槽里, 集群的每个节点负责一部分hash槽。

  9. Redis集群方案什么情况下会导致整个集群不可用?
    答:假设有A,B,C三个节点,他们都是主节点,同时没有为他们做备份节点,这时一旦B节点的服务出了问题,那么整个集群就会因为缺少5501-11000这个范围的哈希槽而导致不可用。

  10. MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?
    答:当Redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略,而数据淘汰策略选择allkeys-lru的话,就会把最近最少使用的数据淘汰了,这就能保证,Redis中的数据都是热点数据了。

发布了242 篇原创文章 · 获赞 250 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104656153