Skip to content

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=True

3. 只会 set/get,不会根据场景选类型

例如:

  • 对象数据更适合 Hash
  • 去重更适合 Set
  • 队列更适合 List

练习题

练习 1

用 Python 连接你的 Redis。

练习 2

写入一个字符串键值,再读取出来。

练习 3

Hash 保存一个用户信息对象。

练习 4

设置一个带过期时间的验证码键值。

练习 5

自己总结:

  • StringListHashSet 分别更适合什么场景

本节小结

这一节最重要的,是让你把 Python 和 Redis 真正连起来。

你最重要的收获应该是:

  • 会连接 Redis
  • 会读写几种常见类型
  • 会设置过期时间
  • 理解 Redis 在缓存、状态和队列中的价值

只要这一层打牢,后面你在 Django、爬虫或其他 Python 项目中使用 Redis 时,就会更自然。

Built with VitePress.