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 %}