Redis 与 MySQL 高频面试题(各10题)

Redis 常见数据类型有哪些?

String、List、Set、ZSet(有序集合)、Hash、Stream、Bitmap、HyperLogLog。

Redis 如何实现缓存雪崩、穿透、击穿的防护?

雪崩:设置过期时间 + 限流;穿透:加布隆过滤器;击穿:互斥锁/热点预加载。

Redis 持久化方式有哪些?

RDB(快照)和 AOF(追加日志),可同时使用提高安全性。

Redis 分布式方案有哪些?

主从复制、哨兵模式、Cluster 模式。

如何删除 Redis 中的大 key?

使用 UNLINK 命令异步删除,避免阻塞主线程。

Redis 如何实现过期淘汰机制?

有定期删除 + 惰性删除 + LRU/LFU 淘汰策略。

Redis 为什么是单线程?

采用 I/O 多路复用模型,避免上下文切换,单线程提高了操作原子性。

如何实现 Redis 分布式锁?

使用 SET key value NX EX 实现简单锁,RedLock 实现跨实例锁。

Redis 的事务机制如何?

通过 MULTI、EXEC、WATCH 实现事务操作。

如何监控 Redis 性能?

使用 info 命令、监控慢查询、开启慢日志、自定义监控指标。

MySQL 索引有哪些类型?

主键索引、唯一索引、普通索引、全文索引、组合索引、前缀索引。

什么是最左前缀匹配原则?

联合索引中,从左到右匹配字段,越靠左优先命中索引。

MySQL 如何优化慢查询?

分析执行计划(EXPLAIN)、加索引、优化 where 条件、避免全表扫描。

InnoDB 与 MyISAM 区别?

InnoDB 支持事务、行锁、外键;MyISAM 只支持表锁,无事务。

MySQL 的事务四大特性?

原子性、一致性、隔离性、持久性(ACID)。

常见的 SQL 注入方式?

联合注入、报错注入、布尔盲注、时间盲注。防止方式:参数化查询。

MySQL 的三大日志分别是什么?

binlog(二进制日志)、redo log(重做日志)、undo log(回滚日志)。

什么是覆盖索引?

查询字段都被索引覆盖,查询无需回表。

MySQL 死锁是什么?如何排查?

两个事务互相等待对方资源。使用 SHOW ENGINE INNODB STATUS 查死锁信息。

如何保证数据一致性?

使用事务、锁机制、幂等设计、分布式一致性协议(如两阶段提交)。