上来就干货!
- 安装django-redis
pip install django-redis
- 配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": f"redis://{REDIS_URL}",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": REDIS_PASSWORD
}
}
}
- 使用
from django_redis import get_redis_connection
redis_client = get_redis_connection()
# 设置指定键的值
redis_client.set(key, value)
# 获取指定键的值
redis_client.get(key)
# 删除指定键的值
redis_client.delete(key)
# 设置键的过期时间,以秒为单位
redis_client.expire(key, timeout)
# 获取过期时间
time = redis_client.ttl(key)
# 0 key 不存在 (或已过期)
# None key 存在但没有设置过期
# 在指定哈希表中设置字段的值
redis_client.hset(name, key, value)
# 获取指定哈希表中字段的值
redis_client.hget(name, key)
# 删除指定哈希表中的一个或多个字段
# 使用hmset
redis_conn.hmset('my_hash', {'field1': 'value1', 'field2': 'value2'})
# 使用hmget
values = redis_conn.hmget('my_hash', ['field1', 'field2'])
redis_client.hdel(name, *keys)
# 获取指定哈希表中所有字段及其值
redis_client.hgetall(name)
# 发布/订阅(Pub/Sub)
pubsub = redis_conn.pubsub() # 创建一个发布/订阅对象
pubsub.subscribe(channel) # 订阅频道
pubsub.publish(channel, message) # 发布消息到频道
# 事务(Transaction)
with redis_conn.pipeline() as pipe:
pipe.set('key1', 'value1')
pipe.get('key1')
results = pipe.execute()
# 或
# 创建redis管道,获取管道对象
pl=redis_conn.pipeline()
# 将redis请求添加到队列
pl.setex('sms_%s'%phone,60,smscode_str)
pl.setex('is_send_%s'%phone,60,1)
# 批量执行请求
pl.execute()