django cache

django cache 缓存

1.缓存可以解决代码大量的重复请求,减少访问者对数据库的压力

官网:https://docs.djangoproject.com/zh-hans/2.2/topics/cache/

2缓存的工作原理:

given a URL, try finding that page in the cache
if the page is in the cache:
    return the cached page
else:
    generate the page
    save the generated page in the cache (for next time)
    return the generated page

3.缓存位置支持以下几种:

Memcached,数据库缓存,文件系统缓存,本地内存缓存,虚拟缓存(用于开发模式),使用自定义的缓存后台

其中Memchahed速度是最快的,应为是基于内存的

4.缓存的方式有以下几种:

1.视图缓存
	from django.views.decorators.cache import cache_page

	#在函数前面加装饰器
	@cache_page(60 * 15)
	def my_view(request):
   		 ...
   		 
2.模板片段缓存
	{% load cache %}
	{% cache 500 sidebar %}
   		 .. sidebar ..
	{% endcache %}
	直接缓存的代码加上以上代码
	
3.低级缓存API
	只缓存部分信息

5.cache基本用法:

# 添加缓存

cache.set(key,value,timeout,DEFAULT_TIMEOUT, version=None)

# 获取缓存

cache.get(key, default=None, version=None)

# 键不存在时添加它

cache.get_or_set(key, default, timeout=DEFAULT_TIMEOUT, version=None)

# 只能访问缓存一次

cache.get_many(keys, version=None)

# 要更有效地设置多个值,字典类型

cache.set_many(dict, timeout)

# 删除键

cache.delete(key, version=None)

# 批量删除,list类型

cache.delete_many(keys, version=None)

# 删除所有

cache.clear()

# 为键设置新的到期时间

cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)

# incr()或decr()方法递增或递减已存在的键

	cache.incr(key, delta=1, version=None)

	cache.decr(key, delta=1, version=None)

# close()关闭与缓存的连接

cache.close()

6.setting.py

# 缓存配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://localhost:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

7.view.py

from django.shortcuts import render, HttpResponse
from django.core.cache import cache


# Create your views here.
def home(request):
    data = '我是要缓存的数据'
    # 判断是否已缓存
    cache_data = cache.get('key', None)
    if cache_data is None:
        # 设置缓存
        cache.set('key', data, 60)
        return HttpResponse('开始缓存')
    else:
        return HttpResponse('我已经缓存了:' + cache_data)

8.这就是一个小的demo,希望大家通过小demo去往深入的研究


版权声明:本文为weixin_43841577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。