2023年大厂面试·Redis篇

1 .什么是缓存穿透?如果没有找到数据,仍然需要访问数据库。
解决方案是使用布隆过滤器来表明数据不存在。
2 . 缓存损坏如何处理?当锁过期时,一批请求涌向数据库,数据库被锁阻塞,然后更新缓存。
3 .如何打破缓存雪崩?一堆key已经过期了,把过期时间分散开,不要全部折叠起来。
4 、Redis和MySQL的同步?读写或运河锁保证数据一致性。
5 .什么是Redis持久化? RDB和AOF镜像添加文件,RDB速度快,AOF安全。
6 .Redis过期政策?惰性删除和周期性删除结合使用。
7 . 淘汰策略是什么?如果内存不足,LRU、LFU等将会被删除。
8 . 如何实现分布式密钥?借助SETNX,Redisson还具有自动续订功能。
9 、Redisson锁能解决主从问题吗?不,请使用 RedLock 或 Zookeeper。
1 0.Redis集群解决方案? 6 .0之后对主从、哨兵、分片集群进行了优化。
1 1 .Redis为什么是单线程的?单线程,内存操作避免切换,I/O复用。
1 2 . 如何解决裂脑问题?配置限制以防止数据丢失。
1 3 . 分裂集群有什么作用?分布式数据,提高一致性,按槽存储数据。

面试redis专题

嘿嘿,说到Redis面试问题,真是让人又爱又恨。
记得在准备面试的时候,我其实把资料看了一遍又一遍,把Redis的各种不同的玩法都背下来了。

我们先来谈谈数据类型。
这是Redis的一项特殊技能。
比如最常用的是String。
它可以存储文本、数字或二进制数据。
它还可以增长和缩小,非常方便。
列表就像一个有序的链接列表,可用于消息队列和评级等。
集合是无组织的,但是元素是唯一的,去除重复非常方便。
例如,对于标签系统和好友推荐有很多需求。
Zset有点像Set,但是每个元素也有一个分数并且可以排序。
适合排名列表。
哈希类似于存储对象。
您可以将用户信息和其他所有内容放入其中。
这还可以减少内存使用并提高查询效率。

消除策略也很有趣。
例如noeviction当内存不足时直接返回错误。
这是默认设置。
还有allkeys-lru,回收最不常用的key,适合缓存。
volatile-lru,这个只回收过期集合中最不常用的key,相当智能,避免误删重要数据。

设置过期日期是 Redis 擅长的事情。
EXPIRE命令可以指定密钥的生命周期。
PEXPIRE 以毫秒为单位。
EXPIREkey-1 或无过期日期,这意味着它永远有效。
TTL 命令允许您查看密钥的剩余生命周期。

确保数据一致性非常重要。
需要配置相应的缓存过期策略,并且支持同步更新机制。
例如,CacheAsidePattern 首先更新数据库,然后删除缓存。
这需要仔细管理并发问题。
WriteThrough,写操作先写入缓存,然后与数据库同步。
延迟较高,但保证数据一致性。
WriteBehindCaching 是数据库的异步批量更新,可以提高性能,但可能会导致数据丢失。

在面试中,经常会被问到有关缓存渗透和雪崩攻击的问题。
缓存泄漏是对不存在数据的频繁请求,这可能会导致数据库过载。
有多种解决方案,例如空缓存、布隆过滤器和接口级别检查。
缓存雪崩是指大量缓存同时失效,所有查询都被刷新到数据库,系统崩溃。
解决方案包括统一过期、多级缓存、高可用架构、限流等。

总的来说,Redis面试题还是围绕这几个基本场景。
您必须根据业务需求选择解决方案,并对原理和实现细节有深入的了解。
这件事需要多练习,多思考。
通过反复的实践和反思,我逐渐认识到了这一点。