django_caching

A easy using django cache manager.


Keywords
django, cache, caching, cache-control, cachemanager, django-application
License
Apache-2.0
Install
pip install django_caching==1.1.0

Documentation

django_caching 使用文档

本项目由九章算法开发维护并开源,九章算法——硅谷顶尖IT企业工程师实时在线授课为您传授面试技巧, 帮助更多中国人找到好工作。

django_caching是一个十分易于使用的针对model的缓存插件。原理是缓存下所有用过的sql,这样下次执行同一条sql的时候就不需要真正进行db query了。并且django_caching会自动进行cache的invalidation(save或者delete的时候),不需要人工干预。

使用方法:

1、从pypi上下载安装:

sudo pip install django_caching

2、在项目的settings.py里面的INSTALLED_APPS里加入cache:

INSTALLED_APPS = (
    ...,
    'cache',
)

3、在CACHES里面加入cache_managertest

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
        'PREFIX': 'default',
    },
    'cache_manager': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
        'PREFIX': 'default::cache_manager',
    },
    'test': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
        'PREFIX': 'default::test',
    },
}

4、执行:

python manage.py migrate

5、在所有需要使用的models中进行修改:

from django.db import models
from cache.manager import CacheManager

class DemoModel(models.Model):
    title = models.CharField('Demo', max_length=255)
    ……
    
    # for cache
    objects = models.Manager()
    cached_objects = CacheManager()

6、将代码中所有用到DemoModel.objects的地方改成DemoModel.cached_objects,在所有用到get_object_or_404的地方改成:

from cache.shortcuts import get_cached_object_or_404
from demo.models import DemoModel

……

demo = get_cached_object_or_404(DemoModel, title='demo')
demo2 = DemoModel.cached_objects.get(title='demo')
demos = DemoModel.cached_objects.all()
demos2 = DemoModel.cached_objects.filter(title__icontains='demo')

Done!Great job!

友情提醒:

**一定要用cached_objects和get_cached_object_or_404,否则如果进行了更改,save或者delete之后不会自动invalidate cache! **

**一定要用cached_objects和get_cached_object_or_404,否则如果进行了更改,save或者delete之后不会自动invalidate cache! **

**一定要用cached_objects和get_cached_object_or_404,否则如果进行了更改,save或者delete之后不会自动invalidate cache! **

(或者在第5步也可以直接用objects = CacheManager(),这样不用修改代码了,但是不推荐)

本项目由九章算法开发维护并开源,九章算法——硅谷顶尖IT企业工程师实时在线授课为您传授面试技巧, 帮助更多中国人找到好工作。

文档编辑:Pure White