django的幾種緩存配置


前言

  首先說,為什么要用緩存的,由於Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:緩存,緩存將一個某個views的返回值保存至內存或者memcache中,5分鍾內再有人來訪問時(時間可以設置),則不再去執行view中的操作,而是直接從內存或者Redis中之前緩存的內容拿到,並返回。

 

緩存的配置

  配置緩存提供了6種方式。

  • 開發調試
  • 內存
  • 文件
  • 數據庫
  • Memcache緩存(python-memcached模塊)
  • Memcache緩存(pylibmc模塊)

    開發調試:
  • 說明:此為開始調試用,實際內部不做任何操作
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',  # 引擎
            'TIMEOUT': 300,                                               # 緩存超時時間(默認300秒,None表示永不過期,0表示立即過期)
            'OPTIONS':{
                'MAX_ENTRIES': 300,                                       # 最大緩存個數(默認300)
                'CULL_FREQUENCY': 3,                                      # 緩存到達最大個數之后,剔除緩存個數的比例,即:1/CULL_FREQUENCY(默認3),3:表示1/3
            },
            #這邊只的是緩存的key:p1:1:func_name
            'KEY_PREFIX': 'p1',                                             # 緩存key的前綴(默認空)
            'VERSION': 1,                                                 # 緩存key的版本(默認1)
            'KEY_FUNCTION':"func_name"                                   # 生成key的函數(默認函數會生成為:【前綴:版本:key】)
        }
    }

    其他除了引擎不一樣,其他的都是通用的,這邊只的是緩存的key:p1:1:func_name的源碼如下:
    所以我們就可以自定義這個key的格式。


    # 自定義key
        def default_key_func(key, key_prefix, version):
            """
            Default function to generate keys.
    
            Constructs the key used by all other methods. By default it prepends
            the `key_prefix'. KEY_FUNCTION can be used to specify an alternate
            function with custom key making behavior.
            """
            return '%s:%s:%s' % (key_prefix, version, key)
    
        def get_key_func(key_func):
            """
            Function to decide which key function to use.
    
            Defaults to ``default_key_func``.
            """
            if key_func is not None:
                if callable(key_func):
                    return key_func
                else:
                    return import_string(key_func)
            return default_key_func
     

     

    內存:
  • 注意是絕對位置(從根目錄開始),必須保證服務器對你列出的路徑具有讀寫權限
  • #'LOCATION': 'c:\foo\bar',#windows下的示例
    • 說明:內存版本的時候,必須設置一個值,這個值是唯一的,此緩存將內容保存至內存的變量中

    •  

      CACHES = {
              'default': {
                  'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
                  'LOCATION': 'unique-snowflake',  #這邊必須設置一個值,這個值是唯一的
              }
          #其他的配置和開發調試版本一樣
      }
      

      文件:說明:此緩存將內容保存至文件

      CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
              'LOCATION': '/var/tmp/django_cache',  #緩存存放的路徑
           } #其他的配置和開發調試版本一樣 }

        數據庫:說明:此緩存將內容保存至數據庫

      CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
              'LOCATION': 'my_cache_table', # 設置一個數據庫存放緩存的表名
          }
          #其他的配置和開發調試版本一樣
      }
      
      # 注:執行創建表命令 python manage.py createcachetable

      Memcache緩存(python-memcached模塊)
      說明:此緩存使用python-memcached模塊連接memcache

      #單台機器
      CACHES = {
              'default': {
                  'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
                  'LOCATION': '127.0.0.1:11211',
              }
              #其他的配置和開發調試版本一樣
      }
      
      #存放本地的
      CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
              'LOCATION': 'unix:/tmp/memcached.sock',
          }
          #其他的配置和開發調試版本一樣
      }   
      
      #支持集群,負載均衡
      CACHES = {
          'default': {
              'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
              'LOCATION': [
                  '172.19.26.240:11211', 
                  '172.19.26.242:11211',
                 #設置權重
                 #('172.19.26.240:11211',10),
                 #('172.19.26.242:11211',20),
              ]    
          }
          #其他的配置和開發調試版本一樣
      }
      

        
      Memcache緩存(pylibmc模塊)

      說明:此緩存使用pylibmc模塊連接memcache

      # 此緩存使用pylibmc模塊連接memcache
          
          CACHES = {
              'default': {
                  'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
                  'LOCATION': '127.0.0.1:11211',
              }
          }
      
          CACHES = {
              'default': {
                  'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
                  'LOCATION': '/tmp/memcached.sock',
              }
          }   
      
          CACHES = {
              'default': {
                  'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
                  'LOCATION': [
                      '172.19.26.240:11211',
                      '172.19.26.242:11211',
                  ]
              }
          }
      

       


免責聲明!

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



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