📖 一、Redis 简介
Redis 是一个开源的高性能键值对(Key-Value)数据库,数据完全存储在内存中,可持久化到磁盘,支持多种数据结构。
-
主要特点:
✅ 极快读写速度(10万+ QPS)
✅ 支持丰富数据类型(String、Hash、List、Set、ZSet)
✅ 内置发布/订阅机制
✅ 支持事务与持久化
常用于:
-
数据缓存
-
分布式锁
-
消息队列
-
排行榜系统
🛠️ 二、Redis 安装与启动
1. Linux 安装(以 Ubuntu 为例)
bash
复制编辑
# 更新软件源 sudo apt update # 安装 Redis sudo apt install redis-server -y # 启动 Redis sudo systemctl start redis # 设置开机自启 sudo systemctl enable redis # 检查 Redis 是否运行 redis-cli ping # 输出:PONG
2. Windows 安装
-
下载 Windows 版本:https://github.com/MicrosoftArchive/redis/releases
-
解压并运行
redis-server.exe
。
📝 三、Redis 基础命令
1. 字符串 (String)
bash
复制编辑
# 设置 key SET name "优快云用户" # 获取 key GET name # 删除 key DEL name # 设置 key 过期时间(单位秒) SETEX temp 60 "临时数据"
2. 哈希 (Hash)
bash
复制编辑
# 设置哈希字段 HSET user:1 name "张三" HSET user:1 age 28 # 获取哈希字段 HGET user:1 name # 获取所有字段 HGETALL user:1
3. 列表 (List)
bash
复制编辑
# 从左插入 LPUSH queue task1 LPUSH queue task2 # 从右取出 RPOP queue
4. 集合 (Set)
bash
复制编辑
# 添加元素 SADD tags redis SADD tags database # 获取所有元素 SMEMBERS tags # 判断元素是否存在 SISMEMBER tags redis
5. 有序集合 (Sorted Set)
bash
复制编辑
# 添加元素及分数 ZADD ranking 100 张三 ZADD ranking 120 李四 # 按分数排序获取 ZRANGE ranking 0 -1 WITHSCORES
🌟 四、Redis 高级功能
1. 发布/订阅
订阅消息
bash
复制编辑
SUBSCRIBE news
发布消息
bash
复制编辑
PUBLISH news "Redis 发布订阅功能"
2. 持久化配置
Redis 支持两种持久化机制:
✅ RDB(快照存储)
✅ AOF(追加日志)
修改配置文件 /etc/redis/redis.conf
启用持久化。
3. 事务操作
bash
复制编辑
MULTI SET count 1 INCR count EXEC
4. 设置分布式锁
cez.wang
cek.wang
ckf.wang
cvr.wang
baige.wang
duocheng.net.cn
fskunba.cn
qdjgx.cn
englishatames.cn
dggn.cn
300367.cn
v8zs.cn
syh360.cn
abc030.cn
tschwl.cn
artbt.cn
itjpg.cn
cscwbit.cn
jhswmly.cn
tjguakao.cn
bash
复制编辑
SET lock:order 1 NX EX 10
-
NX:仅当 key 不存在时设置
-
EX 10:10 秒过期
🚀 五、实战案例:使用 Redis 缓存用户数据
场景:查询用户信息,如果缓存存在则直接返回,否则从数据库查询并缓存。
Python 代码示例
python
复制编辑
import redis # 连接 Redis r = redis.Redis(host='localhost', port=6379, decode_responses=True) def get_user(user_id): key = f"user:{user_id}" # 先查缓存 user = r.get(key) if user: print("从缓存获取:", user) return user else: # 模拟数据库查询 user = {"id": user_id, "name": "张三"} print("从数据库获取:", user) # 缓存数据 60 秒 r.setex(key, 60, str(user)) return user get_user(1) get_user(1) # 第二次将从缓存返回
🛡️ 六、常见问题排查
问题 | 解决方法 |
---|---|
MISCONF Redis is configured to save RDB snapshots | 检查磁盘空间,修改 save 配置 |
Maxmemory reached | 配置内存淘汰策略:maxmemory-policy allkeys-lru |
无法远程连接 | 修改 bind 127.0.0.1 为 0.0.0.0 并关闭防火墙 |
🌿 七、高效技巧
✅ 查看内存使用
bash
复制编辑
INFO memory
✅ 查看键过期时间
bash
复制编辑
TTL key
✅ 批量删除以某前缀开头的 key
bash
复制编辑
redis-cli --scan --pattern "temp:*" | xargs redis-cli del