django-redis緩存記錄

對於站點緩存,咱們使用redis這款key-value數據庫。Redis有着更爲複雜的數據結構而且提供對他們的原子性操做,這是一個不一樣於其餘數據庫的進化路徑。Redis的數據類型都是基於基本數據結構的同時對程序員透明,無需進行額外的抽象。Redis運行在內存中可是能夠持久化到磁盤,因此在對不一樣數據集進行高速讀寫時須要權衡內存,由於數據量不能大於硬件內存。在內存數據庫方面的另外一個優勢是,相比在磁盤上相同的複雜的數據結構,在內存中操做起來很是簡單,這樣Redis能夠作不少內部複雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,由於他們並不須要進行隨機訪問。
它與其餘key-value數據庫有如下三個特色:html

  • Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
  • Redis不單單支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
  • Redis支持數據的備份,即master-slave模式的數據備份。

Redis的優點:python

  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
  • 原子 – Redis的全部操做都是原子性的,意思就是要麼成功執行要麼失敗徹底不執行。單個操做是原子性的。多個操做也支持事務,即原子性,經過MULTI和EXEC指令包起來。
  • 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過時等等特性。

安裝redis程序員

參考連接:redis安裝
安裝完畢後,啓動redis服務便可。可是這樣的redis尚未密碼來保護,誰均可以進入使用,全部咱們要設置一個密碼。redis

# 在redis.conf中找到requirepass這一行,將其設置密碼
requirepass xxxxxx

這樣之後就能夠用密碼登陸了:數據庫

redis-cli -h 主機ip -p 端口號 -a 密碼

可是對於Django的應用,咱們安裝django-redis這個擴展庫使用,它已經集成了redis的使用在其中,咱們只須要參照其官方文檔配置便可。django

安裝django-redis緩存

pip install django-redis

配置django-redisbash

MIDDLEWARE = [
    # 全局cache
    'django.middleware.cache.UpdateCacheMiddleware',    <---- add here
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
     # 全局cache
    'django.middleware.cache.FetchFromCacheMiddleware',    <---- add here
]

# redis緩存
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
            'PASSWORD': os.environ['redis_passwd'],    # 隱藏redis的密碼,將其設置在操做系統中
        },
    },
}
REDIS_TIMEOUT = 7*24*60*60
CUBES_REDIS_TIMEOUT = 60*60
NEVER_REDIS_TIMEOUT = 365*24*60*60

這樣能夠作到全局緩存。session

相關文章
相關標籤/搜索