django-django的六種緩存設置


1、Django緩存作用


參考博客:https://www.cnblogs.com/xiaonq/p/7978402.html#i6

  1. 由於Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯
  2. 緩存將一個某個views的返回值保存至內存或者memcache中,5分鍾內再有人來訪問時,則不再去執行view中的操作
  3. 而是直接從內存或者Redis中之前緩存的內容拿到,並返回

2、Django中提供了6種緩存方式


  • 1.開發調試緩存
# 開發調試緩存(雖然配置上,但實際沒有緩存,還是到數據庫取)

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 引擎

        #注: 下面這些參數時公用的,五種緩存都可以使用
        'TIMEOUT': 300,           # 緩存超時時間(默認300,None表示永不過期,0表示立即過期)
        'OPTIONS':{
            'MAX_ENTRIES': 300,   # 最大緩存個數(默認300)
            'CULL_FREQUENCY': 3,  # 緩存到達最大個數之后,剔除緩存個數的比例(3就是1/3)
        },
    }
}

  • 2.內存緩存
# 注:內存緩存本質上就是在內存中維護一個字典,所存儲的形式就是字典的鍵值對組合

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake',     #這個參數指定變量名必須唯一
    }
}

  • 3.文件緩存
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': os.path.join(BASE_DIR,'cache'),  #緩存內容存放的文件夾路徑
    }
}

  • 4.數據庫緩存
# 注:執行創建表命令 python manage.py createcachetable

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table', # 數據庫表名(名字是自己取的)
    }
}


  • 5: Memcache緩存 兩種
# 注:Memcache緩存有兩個模塊:python-memcached模塊、 pylibmc模塊


CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',          #使用ip加端口連接memcached
    }
}

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'unix:/tmp/memcached.sock',     #以文件的形式連本地memcached
    }
}

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [               # memcached天生支持集群
            #1 均衡分配
            '172.19.26.240:11211',
            '172.19.26.242:11211',
            #2 調整權重(權重和請求比例成正比)
            ('172.19.26.240:11211',1),
            ('172.19.26.242:11211',10),
        ]
    }
}


# 注: pylibmc模塊只改變上面'BACKEND'配置為下面樣式即可
# 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM