数据库知识常用面试题

💡 原文中文,约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命令实现,但存在单点故障、锁失效、死锁和性能问题等缺陷。

➡️

继续阅读