Redis、消息队列(MQ)、Minio、Nginx相关
·
Redis、消息队列(MQ)、Minio、Nginx相关
一、Redis面试题
基础应用
-
Redis支持哪些数据类型?
- String、Hash、List、Set、Sorted Set、Bitmaps、HyperLogLog、GEO。
-
Redis持久化机制有哪些?区别是什么?
- RDB:快照方式,生成全量数据文件(
.rdb),适合备份。 - AOF:日志方式,记录写操作命令,数据更完整(可配置同步策略)。
- 混合持久化(Redis 4.0+):RDB + AOF,启动时优先加载RDB提高恢复速度。
- RDB:快照方式,生成全量数据文件(
-
Redis的过期策略和内存淘汰策略是什么?
- 过期策略:惰性删除(访问时检查)+ 定期删除(后台扫描过期键)。
- 内存淘汰策略:LRU、LFU、随机淘汰、根据TTL淘汰等(通过
maxmemory-policy配置)。
-
如何解决缓存雪崩、击穿、穿透?
- 雪崩:设置不同过期时间,使用Redis集群。
- 击穿:加互斥锁(
setNX)或使用volatile-lru策略。 - 穿透:布隆过滤器(Bloom Filter)过滤不存在的Key。
集群与高可用
-
Redis主从复制的工作原理?
- 主节点执行
bgsave生成RDB文件并发送给从节点,从节点加载RDB后持续同步增量命令。
- 主节点执行
-
哨兵(Sentinel)的作用?
- 监控主从节点状态,自动故障转移(提升从节点为主节点),通知客户端新主节点地址。
-
Redis Cluster的分片机制?
- 采用哈希槽(Hash Slot),共16384个槽,每个节点负责部分槽,客户端通过CRC16计算Key所属槽。
-
Redis事务支持哪些命令?是否保证原子性?
- 使用
MULTI/EXEC包裹命令,支持批量操作,但不保证原子性(出错时不回滚)。
- 使用
二、消息队列(MQ)面试题
基础概念
-
常见的MQ有哪些?各自特点?
- Kafka:高吞吐量,分布式,适合日志、实时流处理。
- RabbitMQ:支持多种协议(AMQP),可靠性高,适合金融场景。
- RocketMQ:阿里巴巴开源,支持事务消息,分布式事务。
-
消息队列的核心作用?
- 解耦、异步处理、流量削峰、日志处理。
-
如何保证消息不丢失?
- 生产端:同步发送并确认ACK。
- MQ端:持久化消息(刷盘策略)、开启主从复制。
- 消费端:手动ACK,失败重试。
-
如何保证消息顺序性?
- Kafka:将消息路由到同一分区,消费者单线程消费。
- RabbitMQ:使用
channel级别的事务或单消费者模式。
集群与高级特性
-
Kafka的分区(Partition)和副本(Replica)机制?
- 分区提高并行度,副本保证高可用,每个分区有一个Leader和多个Follower。
-
RabbitMQ的镜像队列(Mirror Queue)作用?
- 将队列复制到多个节点,确保节点故障时消息不丢失。
-
RocketMQ的分布式事务如何实现?
- 二阶段提交:发送Prepared消息→执行本地事务→根据结果Commit/回滚消息。
-
消费者如何处理重复消息?
- 幂等性设计(唯一ID、状态机),或使用数据库
INSERT IGNORE等。
- 幂等性设计(唯一ID、状态机),或使用数据库
三、Minio面试题
基础应用
-
Minio的核心功能是什么?
- 对象存储,兼容S3协议,支持高并发、分布式部署。
-
Minio的存储策略(Erasure Code)?
- 纠删码技术,将数据分成N份,允许M份损坏仍可恢复(如默认
4+4模式)。
- 纠删码技术,将数据分成N份,允许M份损坏仍可恢复(如默认
-
Minio的访问策略(Policy)如何配置?
- 通过
mc命令或API设置Bucket策略(如只读、读写、公共访问)。
- 通过
-
Minio与云存储(如AWS S3)的区别?
- Minio是私有云对象存储,支持本地部署,功能与S3兼容。
集群与扩展
-
Minio分布式集群的部署方式?
- 至少4台服务器,每台配置多个磁盘,通过
minio server启动,自动形成分布式存储池。
- 至少4台服务器,每台配置多个磁盘,通过
-
Minio的高可用性如何保障?
- 纠删码+分布式部署,单个节点故障不影响数据访问。
-
Minio如何与其他系统集成?
- 通过Java/Go SDK、REST API,或与Kubernetes结合实现容器化部署。
四、Nginx面试题
基础配置
-
Nginx的主要用途?
- 反向代理、负载均衡、静态资源服务器、HTTP缓存、API网关。
-
Nginx的负载均衡算法有哪些?
- 轮询、加权轮询、IP哈希、最少连接、URL哈希。
-
如何配置动静分离?
- 将静态资源(HTML/CSS/JS)直接由Nginx处理,动态请求转发给后端服务器。
-
Nginx的缓存策略如何配置?
- 使用
proxy_cache模块,设置缓存Key、过期时间、缓存区大小。
- 使用
集群与高级特性
-
Nginx的热部署如何实现?
- 通过
nginx -s reload平滑重启,不中断服务。
- 通过
-
Nginx的upstream模块如何配置高可用?
- 配置多个后端服务器,使用
keepalive保持长连接,结合fail_timeout实现故障转移。
- 配置多个后端服务器,使用
-
Nginx如何防御DDoS攻击?
- 使用
limit_conn限制连接数,limit_req限制请求频率,或集成WAF。
- 使用
-
Nginx与Lua的结合用途?
- 通过
ngx_lua模块实现动态逻辑(如A/B测试、流量控制)。
- 通过
五、综合设计题
-
设计一个高可用的Redis集群方案?
- 主从复制 + 哨兵 + 集群分片(Redis Cluster),部署多个节点并监控。
-
如何设计一个可靠的消息队列系统?
- 持久化、ACK机制、重试策略、死信队列(DLX)、幂等性消费。
-
如何扩展Minio集群的存储容量?
- 添加新节点并格式化磁盘,Minio自动将数据均衡到新节点。
-
如何优化Nginx的性能?
- 使用
sendfile零拷贝、压缩(gzip)、减少上下文切换、开启HTTP/2。
- 使用
更多推荐



所有评论(0)