Django缓存

为什么使用缓存?以空间换时间。

https://docs.djangoproject.com/zh-hans/2.0/topics/cache/

(*)缓存框架的核心目标

    -- 较少的代码

            缓存应该尽可能快

            因此围绕缓存后端的所有框架代码应该保持在绝对最小值,特别是对于获取操作

    -- 一致性

            缓存API应该是提供跨越不同缓存后端的一致接口

    -- 可扩展性

            基于开发人员的需求,缓存API应该可以在应用程序级别扩展

----------------------------------------------------------------------------------------------------------------------------------

缓存

1.django内置了缓存框架,并提供了几种常用的缓存

(1)基于Memcached缓存,不用了

(2)使用数据库进行缓存(一般用resis,Django里面没有内置redis缓存,所以需要自己安装第三方插件),现在一般是用这个,数据库中的数据关系越复杂,缓存效率越低,一张表中有十万条数据可能比两万条数据级联了三张表效率还要高。

(3)使用文件进行存,文件进行取

(4)使用本地内存进行缓存,速度快,但是容易丢失,而且别人访问不了你电脑里的缓存。

(5)提供缓存扩展接口(也就是第三方插件)

--------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------

2. Django中实现用redis做缓存

    使用Redis做缓存 常见的有两个实现

(1)django-redis

    http://django-redis-chs.readthedocs.io/zh_CN/latest/#django

(2)django-redis-cache

·https://pypi.python.org/pypi/django-redis-cache/

-----------------------------------------------------------------------------------------------------------------------------------

缓存插件    安装——》配置——》使用

(1)安装

pip install django-redis / django-redis-cache

(2)配置

    和内置的缓存配置基本一致(将下面代码直接粘贴到settings文件中)

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

(3)用法和内置缓存使用一样

创建缓存表

python manage.py createcachetable [table_name]

缓存配置

CACHES={'default': {'BACKEND':'django.core.cache.backends.db.DatabaseCache','LOCATION':'my_cache_table','TIMEOUT':'60','OPTIONS': {'MAX_ENTRIES':'300',        },'KEY_PREFIX':'rock','VERSION':'1',    }}

缓存使用

在视图中使用(使用最多的场景)

@cache_page()

time 秒 60*5 缓存五分钟

cache 缓存配置, 默认default,

key_prefix 前置字符串

缓存底层

----- 获取cache

fromdjango.core.cacheimportcachescache=caches['cache_name']

----- 获取cache

fromdjango.core.cacheimportcache

----缓存操作

    cache.set

     参数有:key

                  value

                  timeout(缓存时长) 过了缓存时长给你刷新数据,否则一直走缓存

    get

    add

get_or _set

    get_many

    set_many

    delete

    delete_many

    clear

    incr 增加

            incr(key, value) key对应的值上添加 value

    decr 减少

            decr(key, value) key对应的值上减少value

            如果value不写,默认变更为1

你可能感兴趣的:(Django缓存)