分类信息网站有哪些第18讲:商品模型 织梦网站系统 dedecms 教学课件

Redis 是一个高性能的内存键值数据库,支持多种数据结构(字符串、列表、哈希、集合等),常用于缓存、消息队列和实时数据处理。Python 通过 redis-py 库与 Redis 交互。
核心功能
- 内存存储:数据存储在内存中,读写速度极快(微秒级)
 - 持久化选项:支持 RDB 快照和 AOF 日志两种持久化方式
 - 数据结构丰富: 
- 字符串(Strings)
 - 哈希(Hashes)
 - 列表(Lists)
 - 集合(Sets)
 - 有序集合(Sorted Sets)
 - 流(Streams)
 
 - 高可用:支持主从复制和 Redis Sentinel
 
Python 操作 Redis 示例
1. 安装库
pip install redis
 
2. 基础操作
import redis# 连接Redis(默认localhost:6379)
r = redis.Redis()# 字符串操作
r.set("name", "Alice")          # 设置键值
print(r.get("name"))            # 输出: b'Alice'(二进制格式)
print(r.get("name").decode())   # 输出: Alice(转为字符串)# 设置过期时间(30秒)
r.setex("temp_data", 30, "expiring soon")
 
3. 哈希操作(存储对象)
# 存储用户信息
user_data = {"name": "Bob", "age": "28", "email": "bob@example.com"}
r.hset("user:1001", mapping=user_data)# 获取字段
print(r.hget("user:1001", "name"))  # b'Bob'
print(r.hgetall("user:1001"))       # {b'name': b'Bob', b'age': b'28', ...}
 
4. 列表操作(消息队列)
# 向左添加元素
r.lpush("tasks", "task1", "task2")  # 向右添加元素
r.rpush("tasks", "task3")         # 弹出元素
task = r.rpop("tasks")  # 获取并移除最右侧元素
print(task)  # b'task3'
 
5. 发布订阅
# 发布者
r.publish("news_channel", "Breaking news!")# 订阅者(需在另一个进程/线程运行)
pubsub = r.pubsub()
pubsub.subscribe("news_channel")
for message in pubsub.listen():if message["type"] == "message":print(message["data"])  # b'Breaking news!'
 
6. 管道操作(批量执行)
pipe = r.pipeline()
pipe.set("counter", 100)
pipe.incr("counter")  # +1
pipe.incrby("counter", 50)  # +50
result = pipe.execute()
print(result)  # [True, 101, 151]
 
典型应用场景
| 场景 | 使用方式 | 
|---|---|
| 缓存 | 存储数据库查询结果 | 
| 会话存储 | 保存用户登录状态 | 
| 排行榜 | 使用有序集合(Sorted Set) | 
| 限流系统 | INCR + EXPIRE 实现请求计数 | 
| 实时消息推送 | 发布订阅模式 | 
注意事项
- 内存管理:定期监控内存使用,避免溢出
 - 持久化配置:根据需求选择 RDB/AOF 或混合模式
 - 连接池:使用连接池提升性能
pool = redis.ConnectionPool(max_connections=10) r = redis.Redis(connection_pool=pool) - 集群支持:大规模部署使用 Redis Cluster
 
官方文档:redis-py 文档
Redis 命令参考:Redis Commands
通过合理使用 Redis,可显著提升 Python 应用的性能,尤其适合高并发读写场景。
