• 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)
            },
        }
    }
    

      

  • 相关阅读:
    第五周 day5 python学习笔记
    第四周 day4 python学习笔记
    第三周 day3 python学习笔记
    常用屏幕分辨率
    学习可以借鉴的大牛们的网站
    jq动态控制样式的一些方法(批量控制样式,带参数控制样式)
    jq实现事件委托
    h5Css新加的一些新的属性
    css布局模型
    task_13
  • 原文地址:https://www.cnblogs.com/pywen/p/15919734.html
Copyright © 2020-2023  润新知