Django中的缓存的配置与使用

一、使用装饰器

 在文件开头导入下面代码,然后在函数上方添加缓存的装饰器

from django.views.decorators.cache import cache_page

一:在视图View中使用 cache_page 【整个视图缓存】

@cache_page(30)

def my_view(request) 


二:在路由URLConf中使用 cache_page 

urlpatterns = [path('/path, cache_page(60)(my_view)')]

 

# 方式一:使用caches['CACHES配置key'] 导入具体对象
from django.core.cache import caches
cache1 = caches['user']
cache2 = caches['pwd']

# 方式二:相当于直接引入CACHES配置项中的'default'项
from django.core.cache import cache
cache.set(key,value,timeout)  存储缓存
    key:缓存的key
    value:Python对象
    timeout:缓存存储的时间(s),默认为CACHES中的TIMEOUT值

cache.get(key) 取缓存,没有数据返回None
    key:缓存的key

cache.add(key,value) 存储缓存,只要可以不在时生效返回值是Bool

cache.get_or_set(key,value,timeout)  如果未获取到数据,则执行set操作

cache.set_many(dict,timout) 批量存储数据
    dict:key和value的字典
    timout:存储时间
    返回值:插入不成功的key的数组

cache.delete(key) 删除key的缓存数据,返回值None

cache.delete_many(key_list) 批量删除,返回值None

  

二、原生缓存

redis缓存

首先要安装django-redis

pip install django-redis
配置 settings.py django项目的缓存配置

CACHES = {
     "default": {
         "BACKEND": "django_redis.cache.RedisCache",  # 引擎
          # redis服务器的ip地址及端口号,及数据库序号,redis一共有15个数据库 0~15
         "LOCATION": "redis://127.0.0.1:6379/1",
         # "LOCATION": "redis://:passwordpassword@47.193.146.xxx:6379/0", # 如果redis设置密码的话,需要以这种格式进行设置,host前面是密码
         "OPTIONS": {
             "CLIENT_CLASS": "django_redis.client.DefaultClient"
         }
     }
 }

  

数据库缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',  # 引擎
        'LOCATION': 'my_cache_table', # 数据库表名(名字是自己取的)
        'TIMEOUT': 300,           # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
        'OPTIONS':{
            'MAX_ENTRIES': 300,   # 最大缓存个数(默认300)
            'CULL_FREQUENCY': 3,  # 缓存条数到达最大值时,删除1/X的缓存数据
        },
    }
}

  

本地内存缓存
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake',     #这个参数指定变量名必须唯一
    }
}

  

文件缓存
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': r'c/xxx',  #缓存内容存放的文件夹路径
    }
}

  

开发调试缓存
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)
        },
    }
}

  

posted @ 2022-02-21 17:11  北京测试菜鸟  阅读(462)  评论(0编辑  收藏  举报