1. 程式人生 > 其它 >【jmeter系列】jmeter常用執行緒組帶例項

【jmeter系列】jmeter常用執行緒組帶例項

django 快取

由於Django是動態網站,所有每次請求均會去資料進行相應的操作,當程式訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:快取,快取將一個某個views的返回值儲存至記憶體或memcache中,5分鐘內再有人來訪問時,則不再去執行view中的操作,而是直接從記憶體或者memcache中之前快取的內容拿到,並返回。

注意:快取一般用在資料內容不經常更新的地方,如果資料更新頻繁,不建議使用快取。

Django中提供了6種快取方式:

# 開發除錯
# 記憶體
# 檔案
# 資料庫
# Memcache快取(python-memcached模組)
# Memcache快取(pylibmc模組)

現在通常將快取寫入到redis中。

1.記憶體快取

說明:該方式是django的預設配置

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

# global_settings.py 

配置檔案中預設的內容;

使用時一般在增加如下配置

CACHES={
    'default':{
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake', #這是一個唯一標示,寫啥都行
        'TIMEOUT': 300,# 快取超時時間(預設300,None表示永不過期,0表示立即過期)
        'OPTIONS':{
            'MAX_ENTRIES': 300, # 最大快取個數(預設300)
            'CULL_FREQUENCY': 3,# 快取到達最大個數之後,剔除快取個數的比例,即:1/CULL_FREQUENCY(預設3)
        }
    }
}

2.檔案快取

此快取將內容儲存至檔案,比如已經經過模版渲染完之後的html檔案內容,如果快取到檔案中,以後就不需要再去進行模版渲染了,直接拿快取中的要快一些

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache', #快取檔案存放路徑
    }
}

3.資料庫快取

 CACHES = {
     'default': {
         'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
         'LOCATION': 'my_cache_table', # 資料庫表
     }
}
# 注:執行建立表命令 python manage.py createcachetable,資料庫中會自動生成名字為my_cache_table的表作為快取表
    
# 注意:如果我們自己手動建立這個快取表的時候,資料庫表的三個欄位是必須要有的:看下面的表,並且不需要制定上面的createcachetable指令就可以使用。
from django.db import models

# Create your models here.

class CacheTalbe(models.Model):
    cache_key = models.CharField(max_length=2000)
    value = models.CharField(max_length=2000,null=True)
    expires = models.DateTimeField(null=True)
 
  • 一般不是用資料庫作為快取,常用的是redis

4.redis快取

1.安裝

pip install django-redis

2.本機安裝redis或者伺服器已經安裝redis

3.配置快取

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100},# 最大連線數
            "PASSWORD":"foobared",# 配置密碼,預設在配置檔案中檢視。
        }
    }
}

5.快取的使用

說明:以上均為django快取的常用配置,以下為快取的使用。

import time
from django.shortcuts import render
from django.views.decorators.cache import cache_page
# Create your views here.

@cache_page(5)# 設定快取5秒更新
def index(request):
    tm=time.time()
    return render(request,'index.html',{"tm":tm})

返回結果5秒內不在更新。

6.補充:django-redis

說明:django 將資料將資料寫入資料時通常使用快取提供的連線。

from django_redis import get_redis_connection
def index_redis(request):
    conn=get_redis_connection("default") # 傳入配置檔案中的連線鍵,因此配置檔案中可以配置多個redis連線
    conn.set("nickname","啊哈",ex=60) # 設定鍵值
    value=conn.get("nickname").decode("utf8")# 獲取值,並將值轉化為字串的形式
    print(value)
    return HttpResponse("...")

# views.py
  • 繼續努力,終成大器!!!