上來就干貨穗酥!
- 安裝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()
# 設(shè)置指定鍵的值
redis_client.set(key, value)
# 獲取指定鍵的值
redis_client.get(key)
# 刪除指定鍵的值
redis_client.delete(key)
# 設(shè)置鍵的過期時(shí)間,以秒為單位
redis_client.expire(key, timeout)
# 獲取過期時(shí)間
time = redis_client.ttl(key)
# 0 key 不存在 (或已過期)
# None key 存在但沒有設(shè)置過期
# 在指定哈希表中設(shè)置字段的值
redis_client.hset(name, key, value)
# 獲取指定哈希表中字段的值
redis_client.hget(name, key)
# 刪除指定哈希表中的一個(gè)或多個(gè)字段
# 使用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)
# 發(fā)布/訂閱(Pub/Sub)
pubsub = redis_conn.pubsub() # 創(chuàng)建一個(gè)發(fā)布/訂閱對(duì)象
pubsub.subscribe(channel) # 訂閱頻道
pubsub.publish(channel, message) # 發(fā)布消息到頻道
# 事務(wù)(Transaction)
with redis_conn.pipeline() as pipe:
pipe.set('key1', 'value1')
pipe.get('key1')
results = pipe.execute()
# 或
# 創(chuàng)建redis管道惠遏,獲取管道對(duì)象
pl=redis_conn.pipeline()
# 將redis請(qǐng)求添加到隊(duì)列
pl.setex('sms_%s'%phone,60,smscode_str)
pl.setex('is_send_%s'%phone,60,1)
# 批量執(zhí)行請(qǐng)求
pl.execute()