缓存
- 热点数据缓存 - Session 存储 - 页面缓存 - 减轻数据库压力
约 1560 字大约 5 分钟
2025-07-03
Redis(Remote Dictionary Server)是一个开源的、高性能的键值对(Key-Value)内存数据库,也被称为数据结构服务器。Redis 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供了丰富的操作命令。
Redis 以其极高的性能(读写速度可达 10万+ QPS)、丰富的数据类型、原子性操作而著称,广泛应用于缓存、会话存储、消息队列、排行榜、实时分析等场景。
# macOS (使用 Homebrew)
brew install redis
brew services start redis
# Ubuntu/Debian
sudo apt update
sudo apt install redis-server
sudo systemctl start redis
# Docker 运行
docker run -d -p 6379:6379 --name redis redis:latest# 命令行客户端
redis-cli
# 带密码连接
redis-cli -h localhost -p 6379 -a yourpassword
# 测试连接
redis-cli ping
# 返回: PONG# 字符串操作
SET name "张三"
GET name
INCR counter # 自增
EXPIRE name 60 # 设置过期时间(秒)
# 哈希操作
HSET user:1 name "张三" age 25
HGET user:1 name
HGETALL user:1
# 列表操作
LPUSH mylist "a" # 左侧插入
RPUSH mylist "b" # 右侧插入
LRANGE mylist 0 -1 # 查看全部
# 集合操作
SADD tags "redis" "database" "cache"
SMEMBERS tags
# 有序集合
ZADD leaderboard 100 "player1" 200 "player2"
ZRANGE leaderboard 0 -1 WITHSCORES本站收录的 Redis 相关文档包含 10 篇文章,涵盖:
缓存
计数器
排行榜
分布式系统
| 类型 | 特点 | 常用命令 | 应用场景 |
|---|---|---|---|
| String | 简单字符串 | SET, GET, INCR | 计数器、缓存 |
| Hash | 字段-值对 | HSET, HGET, HGETALL | 对象存储 |
| List | 双向链表 | LPUSH, RPUSH, LRANGE | 消息队列 |
| Set | 无序集合 | SADD, SMEMBERS, SINTER | 标签、好友 |
| ZSet | 有序集合 | ZADD, ZRANGE, ZRANK | 排行榜 |
A:
| 特性 | Redis | Memcached |
|---|---|---|
| 数据类型 | 丰富(5种+) | 仅字符串 |
| 持久化 | 支持 | 不支持 |
| 主从复制 | 支持 | 不原生支持 |
| 事务 | 支持 | 不支持 |
| 性能 | 略低 | 略高 |
推荐: 新项目优先考虑 Redis
A:
缓存穿透 (查询不存在的数据):
缓存雪崩 (大量缓存同时失效):
缓存击穿 (热点数据失效):
A:
A:
# 加锁(NX = 不存在才设置,EX = 过期时间)
SET lock:order:123 uuid NX EX 10
# 释放锁(Lua 脚本保证原子性)
if redis.call("get", KEYS[1]) == ARGV[1] then
return redis.call("del", KEYS[1])
else
return 0
end合理设置过期时间: 避免内存溢出
使用连接池: 减少连接开销
大key拆分: 避免单个key过大影响性能
慎用 KEYS 命令: 生产环境使用 SCAN 代替
监控内存使用: 设置 maxmemory 和淘汰策略
KEYS pattern # 查找键(慎用)
SCAN cursor # 迭代键(推荐)
EXISTS key # 检查键是否存在
DEL key # 删除键
EXPIRE key seconds # 设置过期
TTL key # 查看剩余时间
TYPE key # 查看类型INFO # 查看服务器信息
MONITOR # 实时监控命令
SLOWLOG GET 10 # 查看慢查询
CLIENT LIST # 查看客户端连接
MEMORY USAGE key # 查看key内存使用SAVE # 同步保存(阻塞)
BGSAVE # 后台保存(推荐)
BGREWRITEAOF # AOF 重写
CONFIG GET save # 查看RDB配置适合:小型应用、开发环境
[Client] --> [Redis]适合:读多写少场景
[Master] --> [Slave1]
--> [Slave2]适合:需要自动故障转移
[Sentinel1] [Sentinel2] [Sentinel3]
\ | /
[Master] --> [Slave]适合:海量数据、高并发
[Cluster Node1] - [Cluster Node2] - [Cluster Node3]
| | |
[Slave1] [Slave2] [Slave3]📊 文档统计
🎯 学习重点
9bb63-feat: Add new documentation for MySQL, Queue, Redis, and ETCD, update various existing topics, and integrate Mermaid.于