redis常见面试题

85 阅读2分钟

一、基础原理相关

  1. Redis是什么?它有哪些特点?

    • 内存数据库,支持持久化
    • 单线程模型,基于事件驱动
    • 支持多种数据结构
    • 高性能,读写速度快
    • 支持主从复制、哨兵、高可用和集群
  2. Redis和Memcached的区别?

    • Redis支持多种数据结构,Memcached只有KV
    • Redis支持持久化,Memcached不支持
    • Redis支持主从复制和集群,Memcached支持分布式但实现不同
    • Redis功能更丰富(事务、Lua脚本)
  3. Redis的单线程是如何保证高性能的?

    • 避免了线程切换和锁竞争开销
    • 使用I/O多路复用技术
    • 操作尽量在内存完成,速度快
  4. Redis持久化方式有哪些?

    • RDB(快照方式)
    • AOF(追加文件方式)
    • 混合持久化(Redis 4.0+)
  5. Redis数据是如何存储的?

    • 采用字典(哈希表)存储key-value
    • 使用压缩列表、跳表等多种数据结构优化内部存储

二、数据结构相关

  1. Redis支持哪些数据结构?

    • String、List、Set、ZSet(有序集合)、Hash、Bitmap、HyperLogLog、Geo
  2. Redis的String类型最大可以存储多大数据?

    • 最大512MB
  3. 什么是Redis的List?它的应用场景?

    • 双向链表结构,支持push/pop操作
    • 用于消息队列、任务队列、排行榜等
  4. Set和Sorted Set有什么区别?

    • Set是无序集合,不重复
    • Sorted Set带分数,自动排序
  5. Hash类型的特点和适用场景?

    • 键值对集合,适合存储对象

三、性能优化相关

  1. Redis为什么要做内存淘汰?

    • 限制内存使用,避免OOM
  2. Redis支持哪些内存淘汰策略?

    • noeviction、volatile-lru、allkeys-lru、volatile-random、allkeys-random、volatile-ttl
  3. 如何解决Redis的缓存击穿?

    • 互斥锁(加锁)
    • 预热缓存
    • 使用热点缓存永不过期
  4. 什么是缓存雪崩?如何防止?

    • 大量缓存同时失效,击穿数据库
    • 设置缓存过期时间错开,增加二级缓存
  5. Redis集群的原理和特点?

    • 数据分片存储,自动分片
    • 节点间通信保持一致
    • 提供高可用和横向扩展

四、应用和实战

  1. Redis事务是如何实现的?

    • 通过MULTI/EXEC命令打包执行
    • 不支持回滚,执行失败不会自动回滚
  2. Redis Lua脚本有什么优势?

    • 保证脚本原子执行
    • 减少网络交互,提高效率
  3. 如何实现分布式锁?

    • 使用SET key value NX PX milliseconds命令
    • Redlock算法(多节点锁)
  4. Redis哨兵是什么?它的作用?

    • 监控主从实例状态,实现主节点故障自动切换
  5. Redis常见的内存优化方法?

    • 使用合理的数据结构(比如hash存储小对象)
    • 压缩列表、快速列表等优化内部存储
    • 合理设置过期时间