docker 部署 redis
1. 下载 redis 镜像
# docker images | grep redis
bitnami/redis 7.2.4-debian-11-r5 45de196aef7e 10 months ago 95.2MB
2. docker-compose 部署
version: "3"
services:
redis:
image: bitnami/redis:7.2.4-debian-11-r5
#ports:
# - "6379:6379"
environment:
- REDIS_PASSWORD=redisisthebest
networks:
- mynet
volumes:
- "/data/docker_data/redis/conf:/opt/bitnami/redis/etc"
- "/data/docker_data/redis/data:/bitnami/redis/data"
networks:
mynet:
external: false
注意:挂载data目录增加宿主机上incr.aof的写权限,
否则redis启动报错
python 操作 redis
在 Python 中连接和操作 Redis 数据库,通常使用 redis-py
库。以下是连接 Redis 的基本步骤和示例代码。
1. 安装 redis-py
库
首先,你需要安装 redis-py
库。可以使用 pip
来安装:
pip install redis
2. 连接到 Redis
以下是连接到本地 Redis 服务器的示例代码:
import redis
# 创建 Redis 连接
r = redis.Redis(
host='localhost', # Redis 服务器地址
port=6379, # Redis 端口
db=0, # 数据库编号
password=None # 如果 Redis 设置了密码,填写密码
)
# 测试连接
try:
r.ping() # 发送 PING 命令,检查是否连接成功
print("Connected to Redis!")
except redis.ConnectionError:
print("Failed to connect to Redis.")
3. 基本操作
以下是一些常见的 Redis 操作示例:
设置和获取键值对
# 设置键值对
r.set('name', 'Alice')
# 获取键值对
name = r.get('name')
print(name.decode('utf-8')) # 输出: Alice
删除键
r.delete('name')
检查键是否存在
exists = r.exists('name')
print(exists) # 输出: 0 (不存在) 或 1 (存在)
设置过期时间
r.set('key', 'value')
r.expire('key', 10) # 设置键在 10 秒后过期
获取所有键
keys = r.keys('*') # 获取所有键
print([key.decode('utf-8') for key in keys])
列表操作
# 向列表中添加元素
r.lpush('mylist', 'item1')
r.lpush('mylist', 'item2')
# 获取列表中的所有元素
items = r.lrange('mylist', 0, -1)
print([item.decode('utf-8') for item in items]) # 输出: ['item2', 'item1']
哈希操作
# 设置哈希字段
r.hset('myhash', 'field1', 'value1')
r.hset('myhash', 'field2', 'value2')
# 获取哈希字段
value = r.hget('myhash', 'field1')
print(value.decode('utf-8')) # 输出: value1
# 获取所有哈希字段和值
hash_data = r.hgetall('myhash')
print({k.decode('utf-8'): v.decode('utf-8') for k, v in hash_data.items()})
集合操作
# 向集合中添加元素
r.sadd('myset', 'member1')
r.sadd('myset', 'member2')
# 获取集合中的所有元素
members = r.smembers('myset')
print([member.decode('utf-8') for member in members])
4. 使用连接池
在高并发场景下,建议使用连接池来管理 Redis 连接,以提高性能。
import redis
# 创建连接池
pool = redis.ConnectionPool(
host='localhost',
port=6379,
db=0
)
# 从连接池获取连接
r = redis.Redis(connection_pool=pool)
# 使用连接
r.set('key', 'value')
value = r.get('key')
print(value.decode('utf-8'))
5. 处理异常
在实际应用中,建议捕获和处理 Redis 操作中的异常。
import redis
try:
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value')
value = r.get('key')
print(value.decode('utf-8'))
except redis.RedisError as e:
print(f"Redis error: {e}")
总结
- 使用
redis-py
库可以轻松连接和操作 Redis。 - 常见的操作包括设置和获取键值对、列表操作、哈希操作、集合操作等。
- 在高并发场景下,建议使用连接池来管理连接。
- 处理异常以确保程序的健壮性。
通过这些步骤,你可以在 Python 中轻松地连接和操作 Redis 数据库。