Skip to main content
Redis 是高性能的键值存储数据库,常用于缓存、消息队列、分布式锁等场景。

目录

学习路线

阶段主题核心内容链接
1基础入门安装配置、基本命令、Key 操作进入学习
2数据类型String、Hash、List、Set、ZSet进入学习
3进阶功能事务、发布订阅、Lua、Stream进入学习
4持久化RDB、AOF、混合持久化进入学习
5高可用主从复制、哨兵、Cluster 集群进入学习
6性能优化内存优化、缓存问题、最佳实践进入学习
7底层原理数据结构、网络模型、线程模型进入学习

快速参考

常用命令

# 连接 Redis
redis-cli -h 127.0.0.1 -p 6379 -a password

# 基本操作
SET key value              # 设置值
GET key                    # 获取值
DEL key                    # 删除
EXPIRE key seconds         # 设置过期时间
TTL key                    # 查看剩余时间
KEYS pattern               # 查找 key(生产慎用)
SCAN cursor                # 迭代 key(推荐)

# 查看信息
INFO                       # 服务器信息
DBSIZE                     # key 数量
CLIENT LIST                # 客户端连接

数据类型速查

类型特点典型场景
String简单键值对缓存、计数器、分布式锁
Hash字段-值映射对象存储
List有序列表消息队列、最新列表
Set无序不重复集合标签、共同好友
ZSet有序集合排行榜、延迟队列
Bitmap位图签到、在线状态
HyperLogLog基数统计UV 统计
Geo地理位置附近的人
Stream消息流消息队列

核心知识体系

Redis 核心知识体系
├── 数据类型
│   ├── 5 种基本类型:String、Hash、List、Set、ZSet
│   └── 4 种特殊类型:Bitmap、HyperLogLog、Geo、Stream
├── 持久化
│   ├── RDB - 快照,恢复快,可能丢数据
│   └── AOF - 日志,数据完整,文件大
├── 高可用
│   ├── 主从复制 - 数据备份
│   ├── 哨兵模式 - 自动故障转移
│   └── Cluster - 分片集群
├── 缓存问题
│   ├── 缓存穿透 - 查不存在的数据
│   ├── 缓存击穿 - 热点 key 过期
│   └── 缓存雪崩 - 大量 key 同时过期
└── 底层原理
    ├── 单线程模型(命令执行)
    ├── IO 多路复用(epoll)
    └── 高效数据结构(SDS、跳表、压缩列表)

面试高频

  • Redis 为什么这么快?
  • Redis 是单线程还是多线程?
  • String 底层是什么结构?
  • ZSet 底层是怎么实现的?
  • RDB 和 AOF 的区别?
  • 主从复制的原理?
  • 哨兵是怎么选举的?
  • Cluster 如何分片?
  • 缓存穿透、击穿、雪崩如何解决?
  • 如何实现分布式锁?
  • 如何保证缓存和数据库一致性?
  • Redis 内存淘汰策略有哪些?