数据库知识常用面试题
💡
原文中文,约5400字,阅读约需13分钟。
📝
内容提要
本文讨论了数据库设计与操作中的面试题,包括缓存雪崩、缓存穿透及其解决方案,介绍了布隆过滤器、事务的ACID特性,以及Redis的功能和持久化方式,探讨了分布式锁的实现及其缺陷,最后提到内存优化和淘汰策略。
🎯
关键要点
- 缓存雪崩是指缓存同一时间大面积失效,导致数据库承受大量请求而崩溃。解决方案包括提高Redis集群可用性、使用本地缓存和限流、利用Redis持久化机制恢复缓存。
- 缓存穿透是指大量请求的key不存在于缓存中,直接请求数据库。解决方案包括参数校验和设置无效key的过期时间。
- 布隆过滤器是一种数据结构,用于判断数据是否存在于海量数据中,可以有效防止缓存穿透。
- 事务的四大特性(ACID)包括原子性、一致性、隔离性和持久性,确保数据库操作的可靠性。
- Redis的功能包括键值存储、缓存、发布/订阅、排序集合、列表、哈希表、队列和事务操作。
- Redis的持久化方式有RDB(快照)和AOF(追加日志),可以根据需求选择合适的持久化策略。
- 分布式锁可以通过Redis的SETNX命令实现,但存在单点故障、锁失效、死锁和性能问题等缺陷。
- 内存优化可以通过选择合适的数据结构、使用压缩、设置过期时间、分片和分区、持久化和内存淘汰策略等方式实现。
- Redis的淘汰策略包括LRU(最近最少使用)、LFU(最不经常使用)、随机淘汰、TTL(过期时间)和Clock(近似LRU)。
❓
延伸问答
什么是缓存雪崩,它的解决方案有哪些?
缓存雪崩是指缓存同一时间大面积失效,导致数据库承受大量请求而崩溃。解决方案包括提高Redis集群可用性、使用本地缓存和限流、利用Redis持久化机制恢复缓存。
如何防止缓存穿透?
防止缓存穿透的方法包括做好参数校验,直接抛出异常信息,以及设置无效key的过期时间。
布隆过滤器是什么,它的作用是什么?
布隆过滤器是一种数据结构,用于判断数据是否存在于海量数据中,可以有效防止缓存穿透。
事务的ACID特性是什么?
事务的ACID特性包括原子性、一致性、隔离性和持久性,确保数据库操作的可靠性。
Redis有哪些持久化方式?
Redis的持久化方式有RDB(快照)和AOF(追加日志),可以根据需求选择合适的持久化策略。
分布式锁的实现方式及其缺陷是什么?
分布式锁可以通过Redis的SETNX命令实现,但存在单点故障、锁失效、死锁和性能问题等缺陷。
➡️