一 Python操作Redis之普通連接
#先安裝 pip3 install redis import redis r = redis.Redis(host='127.0.0.1', port=6379) r.set('foo', 'Bar') print(r.get('foo'))
二 Python操作Redis之連接池
#使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開#銷。默認,每個Redis實例都會維護一個自己的連接池。可以直接建立一個連接池,然后作為#參數Redis,這樣就可以實現多個Redis實例共享一個連接池 import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379) r = redis.Redis(connection_pool=pool) r.set('foo', 'Bar') print(r.get('foo'))
三 Django中使用redis
方式1:(所有框架通用)
建立redis_pool.py
import redis POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,password='1234',max_connections=1000)
視圖函數使用
import redis from django.shortcuts import render,HttpResponse from utils.redis_pool import POOL def index(request): conn = redis.Redis(connection_pool=POOL) conn.hset('kkk','age',18) return HttpResponse('設置成功') def order(request): conn = redis.Redis(connection_pool=POOL) conn.hget('kkk','age') return HttpResponse('獲取成功')
方式2:(django自己封裝的)
安裝django-redis模塊
pip3 install django-redis
setting里配置:
# redis配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "CONNECTION_POOL_KWARGS": {"max_connections": 100} # "PASSWORD": "123", } } }
注意:設置了redis配置,此時建立的緩存會存在redis里面
視圖函數
from django_redis import get_redis_connection conn = get_redis_connection('default') print(conn.hgetall('xxx'))
四 redis開啟事務
redis-py默認在執行每次請求都會創建(連接池申請連接)和斷開(歸還連接池)一次連接操作,如果想要在一次請求中指定多個命令,則可以使用pipline實現一次請求指定多個命令,並且默認情況下一次pipline 是原子性操作
import redis pool = redis.ConnectionPool(host='10.211.55.4', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True) pipe.multi() pipe.set('name', 'alex') pipe.set('role', 'sb') pipe.execute()