django中的缓存框架

使用缓存

在setting中配置缓存数据库,在setting最后加上:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

LOCATION用来指定缓存数据库表的名字, 可修改

配置好setting之后执行以下指令,创建缓存表

python manage.py createcachetable

使用缓存表直接在需要缓存的试图函数上加上装饰器@cache_page(time)即可

time表示保存该缓存的时长,单位为秒

自定义缓存

以demo举例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
加载成功
</body>
</html>
def testCache(request):
#     判断缓存中是否有数据
#    从缓存中取数据,获取到缓存内容
    cacheTest = cache.get("testcachehtml")
    if cacheTest:#有数据--直接响应
        return HttpResponse(cacheTest)
    else:#没有数据,--加载并存到缓存中区
        # sleep模拟从数据库加载数据需要的时间
        time.sleep(4)
        tem = loader.get_template("testCache.html")
        strHtml = tem.render()
        # 保存到缓存中去
        cache.set("testcachehtml",strHtml,60)

        return  HttpResponse(strHtml)

缓存操作

存: cache.set(key,value,缓存时间)
取: cache.get(key)

add               添加
get_or_set    如果有对应的值表示获取,没有就设置
get_many      获取多个
set_many      设置多个值
delete            删除
delete_many 删除多个
clear             清除
touch            设置有效时间

使用redis作为缓存数据库

1、安装对应的模块

pip install django-redis

2、在setting中进行配置,将创建缓存表的配置修改为:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

使用redis缓存与使用缓存表的用法一致

注:使用redis存储,需要启动redis服务,否则会报数据连接错误

配置redis时常用的配置:

TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况

下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。

OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。

具体配置可参考网站:https://django-redis-chs.readthedocs.io/zh_CN/latest/#django

猜你喜欢

转载自blog.csdn.net/pyrans/article/details/82778848
今日推荐