Python操作Redis
当你开始把 Python 和 Redis 结合时,你会真正感受到“缓存”和“高频读写状态”的价值。
这一节的重点,不只是会连接 Redis,而是学会把 Redis 用在真实程序逻辑里。
本节目标
- 学会安装 Redis 的 Python 客户端
- 学会建立基础连接
- 学会用 Python 读写 String、List、Hash、Set
- 学会设置过期时间
- 理解 Redis 在 Python 项目中的常见用法
安装客户端
bash
pip install redis安装完成后就可以在 Python 中使用它。
建立连接
python
import redis
r = redis.Redis(
host="127.0.0.1",
port=6379,
db=0,
decode_responses=True
)这里最重要的一项是:
python
decode_responses=True它的作用是:
- 让取出来的结果直接是普通字符串
- 而不是字节串
这对初学者特别重要,否则你经常会看到 b'xxx' 这种结果。
最基础的字符串操作
python
import redis
r = redis.Redis(host="127.0.0.1", port=6379, db=0, decode_responses=True)
r.set("name", "python")
value = r.get("name")
print(value)输出结果:
text
python列表操作
python
r.lpush("tasks", "task1")
r.lpush("tasks", "task2")
print(r.lrange("tasks", 0, -1))输出结果:
text
['task2', 'task1']这表示:
- 把两个任务压入列表
- 再把列表内容取出来
这在任务队列场景中很常见。
哈希操作
哈希非常适合保存“对象型”数据。
python
r.hset("user:1", mapping={
"name": "小明",
"age": 18,
"city": "北京"
})
print(r.hgetall("user:1"))输出结果:
text
{'name': '小明', 'age': '18', 'city': '北京'}你可以把它理解成在 Redis 中保存了一份用户对象。
集合操作
python
r.sadd("tags", "python", "linux", "python")
print(r.smembers("tags"))输出结果中不会有重复值。
这非常适合:
- 标签集合
- 去重记录
设置过期时间
Redis 很适合存放短时间有效的数据,例如验证码。
python
r.setex("sms:13800000000", 60, "123456")表示:
- 把验证码保存 60 秒
- 到时间自动过期
这在注册、登录、短信验证等场景里非常常见。
Redis 在 Python 项目中的常见用法
1. 做缓存
先查 Redis,没有再查数据库。
例如:
python
cache_value = r.get("article:1")
if cache_value:
print("直接从 Redis 读取:", cache_value)
else:
print("Redis 没有命中,应该去数据库查询")2. 保存验证码
短时有效、自动过期,非常适合 Redis。
3. 保存临时会话状态
很多临时登录状态或临时信息适合放在 Redis。
4. 任务队列
用列表结构存待处理任务也很常见。
一个完整小示例:缓存课程标题
python
import redis
r = redis.Redis(host="127.0.0.1", port=6379, db=0, decode_responses=True)
course_id = 1
cache_key = f"course:{course_id}:title"
title = r.get(cache_key)
if title:
print("从 Redis 读取课程标题:", title)
else:
title = "Python 基础入门"
r.set(cache_key, title)
print("Redis 中没有,已写入默认标题:", title)如果第一次运行,输出可能是:
text
Redis 中没有,已写入默认标题: Python 基础入门第二次运行时,输出可能变成:
text
从 Redis 读取课程标题: Python 基础入门这就是最基础的缓存思路。
常见错误
1. 连不上 Redis
通常检查:
- Redis 服务是否启动
- 端口是否正确
- 地址是否写错
2. 取出来的是字节串
通常是因为没有加:
python
decode_responses=True3. 只会 set/get,不会根据场景选类型
例如:
- 对象数据更适合
Hash - 去重更适合
Set - 队列更适合
List
练习题
练习 1
用 Python 连接你的 Redis。
练习 2
写入一个字符串键值,再读取出来。
练习 3
用 Hash 保存一个用户信息对象。
练习 4
设置一个带过期时间的验证码键值。
练习 5
自己总结:
String、List、Hash、Set分别更适合什么场景
本节小结
这一节最重要的,是让你把 Python 和 Redis 真正连起来。
你最重要的收获应该是:
- 会连接 Redis
- 会读写几种常见类型
- 会设置过期时间
- 理解 Redis 在缓存、状态和队列中的价值
只要这一层打牢,后面你在 Django、爬虫或其他 Python 项目中使用 Redis 时,就会更自然。