Redis面试题

1.redis的使用场景

        1.1缓存        

缓存三兄弟(穿透、击穿、雪崩) 、双写一致、持久化、数据过期策略,数据淘汰策略缓

缓存穿透:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库

解决方案

1、设置不存在的数据为null

2、添加布隆过滤器,缓存预热时,预热就加在到缓存中

解决布隆过滤器误判,设置误判率

缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮 

解决方案:

1、互斥锁

2、逻辑过期(不设置过期时间)

缓存雪崩:是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力 

解决方案:

给不同的Key的TTL添加随机值
利用Redis集群提高服务的可用性         哨兵模式、集群模式

给业务添加多级缓存        Guava或Caffeine
给缓存业务添加降级限流策略        ngxin或spring cloud gateway

redis做为缓存,mysql的数据如何与redis进行同步呢? (双写一致性)

强一致性:延迟双删、读写锁

 

最终一致性:异步通知,canal(代码0侵入)

 

 redis做为缓存,数据的持久化是怎么做的?
 在Redis中提供了两种数据持久化的方式:1、RDB 2、AOF

假如redis的key过期之后,会立即删除吗?(数据过期策略)
Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略 (数据过期策略)

Redis数据删除策略-惰性删除
惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key

Redis数据删除策略-定期删除
定期删除:每隔一段时间,我们就对一些key进行检查,删除里面过期的key(从一定数量的数据库中取出一定数量的随机key进行检查,并删除其中的过期key)。
定期清理有两种模式:
SLOW模式是定时任务,执行频率默认为10hz,每次不超过25ms,以通过修改配置文件redis.conf 的hz 选项来调整这个次数
FAST模式执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms

假如缓存过多,内存是有限的,内存被占满了怎么办?(数据淘汰策略)

 

        1.2分布式锁

                setnx、redisson

        1.3redis集群相关问题

        有哪些集群模式

1、主从模式

全量同步

1.从节点请求主节点同步数据 (replication id、 offset)
2.主节点判断是否是第一次请求,是第一次就与从节点同步版本信息 (replication id和offset)

3.主节点执行bgsave,生成rdb文件后,发送给从节点去执行

4.在rdb生成执行期间,主节点会以命令的方式记录到缓冲区(一个日志文件)

5.把生成之后的命令日志文件发送给从节点进行同步

增量同步
1.从节点请求主节点同步数据,主节点判断不是第一次请求,不是第一次就获取从节点的offset值

2.主节点从命令日志中获取offset值之后的数据,发送给从节点进行数据同步 

2、哨兵模式

 

分片集群

 

 

 

 

 

 

 

 

        1.3消息队列、延迟队列用何种数据类型

               消息队列:  list,PubSub,Stream

                延迟队列:zset

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值