redis是什么?
redis是用於操作內存的一個軟件。
1 1、可以做持久化,且有兩種模式:AOF和RDB 2 2、相當於一個大字典,存儲的是key/value 3 3、單進程單線程,請求多則排隊,一個個處理 4 4、支持5大數據類型 5 a.字符串 6 b.列表 7 c.集合 8 d.字典 9 e.有序集合
1.服務器上安裝redis
pass
2.python安裝redis模塊
pip3 install redis
3.redis的基本連接和增查
import redis
# redis的基礎操作
conn = redis.Redis(host='182.254.210.59',port=6379,password='123123') # 創建連接redis
conn.set('k1','v1') # 往redis中插入一條數據
val = conn.get('k1') # 查詢插入的數據
print(val) # 打印值
4.redis的連接池創建及使用
pool = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123') # 創建一個連接池
conn = redis.Redis(connection_pool=pool,max_connections=1000) # 調用連接池,並指定最多連接數
conn.set('k2','v2') # 設置值
print(conn.get('k2')) # 取值
如果想更方便的使用,則創建一個redis_pool的連接池,將pool = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123',max_connections=1000)放到這個文件中,具體方法
在redis_pool文件中
import redis
POOL = redis.ConnectionPool(host='182.254.210.59',port=6379,password='123123',max_connections=1000)
在redis操作文件中
from redis_oper.redis_pool import POOL
conn = redis.Redis(connection_pool=POOL)
conn.set('k2','v2')
print(conn.get('k2'))
5.Django中操作redis
安裝django-redis模塊
pip3 install django-redis
在setting配置:
# reids_configure
CACHES = {
"default":{
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://182.254.210.59:6379", # 連接地址
"OPTIONS": {
"CLIENT_CALSS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 1000},
"PASSWORD":"123123", # 連接密碼
}
}
}
在views中調用
def index(request):
conn = get_redis_connection('default')
conn.hset('dic','age',22)
return HttpResponse('設置成功')
def order(request):
conn = get_redis_connection('default')
val = conn.hget('dic','age')
val = val.decode('utf-8')
return HttpResponse('取值成功 '+val)
6.全站緩存
全站緩存要用到中間件了,在settings中間件配置的 MIDDLEWARE 模塊中,加兩條配置
'django.middleware.cache.UpdateCacheMiddleware', # 加到中間件的最上面 'django.middleware.cache.FetchFromCacheMiddleware', # 加到中間件的最下面 附加: CACHE_MIDDLEWARE_ALIAS = "" # 設置緩存的別名 CACHE_MIDDLEWARE_SECONDS = "" # 設置緩存的超時時間 CACHE_MIDDLEWARE_KEY_PREFIX = ""
全站緩存指的是每次在請求過來的時候先經過中間件,然后到緩存,如果緩存中沒有的話去就去數據庫中找,在返回數據的時候順便放到緩存中一份
7.單個視圖緩存
方式一: 給想要被緩存的單個視圖加裝飾器
from django.views.decorators.cache import cache_page # 在views中調用
@cache_page(60 * 15)
def index(request):
...
方式二:在配置url的同時直接指定緩存
from django.views.decorators.cache import cache_page
urlpatterns = [
url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
]
8.局部視圖緩存
8.1 引入TemplateTag
{% load cache %}
8.2 使用緩存
{% cache 5000 緩存key %} # 指5000秒 緩存key 指緩存存放的地方
<div></div> # 要被緩存的單獨一塊內容
{% endcache %}
