Redis面试相关内容了解下~(二)

本文介绍了Redis过期键的定时删除、惰性删除和定期删除策略,以及volatile-lru、volatile-ttl、volatile-random等回收/淘汰策略的应用场景。重点讲述了为何将数据存内存和Redis同步机制。
摘要由CSDN通过智能技术生成

原文地址:Redis面试相关内容了解下~(二)

1、Redis过期键的删除策略?

  1. 定时删除:在设置键的过期时间的同时创建一个定时器,让定时器在键的过期时间来临时执行对键的删除操作。

  2. 惰性删除:放任键过期不管,但每次从键空间取值时,都检查取得的键值是否过期,如已过期,就删除,反之则返回该键值。

  3. 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面过期键,至于要删除多少,就是由算法决定了。

2、Redis的回收/淘汰策略?

  1. volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。

  2. volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。

  3. volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。

  4. allkeys-lru:从数据集中挑选最近最少使用的数据淘汰。

  5. allkeys-random:从数据集中任意选择数据淘汰。

  6. no-enviction(驱逐):禁止驱逐数据。

此六种机制中volatile和allkeys规定了是对已设置过期时间的数据集还是对全部数据集淘汰数据,后面的lru、ttl、random是三种不同的淘汰策略,最后加一种永不回收(no-enviction)策略。

3、使用淘汰策略的规则?

  1. 如数据呈幂律分布,也就是一部分访问频率高,其它低,则使用allkeys-lru。

  2. 如数据呈平等分布,也就是所有数据访问频率相等,则使用allkeys-random。

4、为什么Redis要将所有数据放入内存?

主要是为了实现快速读写,并通过异步的方式将数据写入磁盘,所以Redis具有快速和数据持久化的特征,如不讲数据放入内存,磁盘I/O速度会严重影响Redis性能,如设置了最大使用内存,则数据量达到一定程度之后就不再往内存写入数据。

5、Redis同步机制?

Redis可使用主从同步、从从同步,第一次同步时,主节点做一次bgsave,同时将后续修改操作记录到内存buffer,之后将rab文件全量同步到slave,slave将rab全量加载到内存,之后通知master将slave加载rab期间的操作记录再次同步到slave,重复之前的操作就完成了数据同步。

6、pipline有什么好处?为什么要用pipline?

可将多次I/O往返的时间缩短为一次,前提是pipline执行的指令之间没有因果相关性,使用redis-benchmark进行压测时可发现影响Redis的QPS峰值的重要因素是pipline各批次指令的数目。

7、Redis集群原理?

  1. Redis Sentinel着眼于高可用,在master宕机时,会自动将slave升级为master,继续提供服务。

  2. Redis Cluster着眼于扩展性,在单个Redis内存不足时,使用Cluster进行分片存储。

至此,本次分享就结束了,后期会慢慢补充。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值