BACKEND:
django.core.cache.backends.db.DatabaseCache
LOCATION:
数据库表名
示例:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
}
}
Database缓存配置——创建缓存表
使用数据库缓存之前,需要创建缓存表:
python manage.py createcachetable
创建的表名为缓存配置中的LOCATION值
思考:Cache表创建到哪里去了呢?
配置好数据库缓存之前还需要配置数据库
示例:
DATABASES = {
'default': {
'NAME': 'app_data',
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': 'postgres_user',
'PASSWORD': ’’password
}
}
只会创建不存在的表,如果表已经存在,不操作 默认情况下会将cache表创建到default数据库,如果要创建到其他数据库,需要指定database
疑问?
1)可否将cache分类存储到不同的表?
2)可否将cache分别存储到不同数据库?
答案:可以的
1)Mutiple Database Caches: createcachetable会为每个 Cache 创建一张缓存表
2)Mutiple Databases: createcachetable会去查找数据库routers中的allow_migrate()方法,检查是否允许migrate。
3)createcachetable默认使用default数据库,要使用其它数据库,需要用--database参数。
Multi Database Caches配置示例
CACHES = {
’default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': ’api_cache_table',
},# 必须配置default
‘apps’: {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': ’apps_cache_table',
}
}
如果要使用缓存,必须配置default缓存,这里的示例又配置了apps这个缓存
class CacheRouter(object):
"""A router to control all database cache operations"""
def db_for_read(self, model, **hints):
"All cache read operations go to the replica"
…
def db_for_write(self, model, **hints):
"All cache write operations go to primary"
…
def allow_migrate(self, db, app_label, model_name=None, **hints):
"Only install the cache model on primary"
…
dbRouter控制缓存的读写,需要分别实现db_for_read,db_for_write和allow_migrate这三个方法
1.Multiple Databases——读
def db_for_read(self, model, **hints):
"All cache read operations go to the replica"
if model._meta.app_label == 'django_cache':
return 'cache_replica'
return None
所有DB缓存的读操作指向 cache_replica DB
2.Multiple Databases——写
def db_for_write(self, model, **hints):
"All cache write operations go to primary"
if model._meta.app_label == 'django_cache':
return 'cache_primary'
return None
所有DB缓存的写操作指向 cache_primary DB
3.Multiple Databases——migration
def allow_migrate(self, db, app_label, model_name=None, **hints):
"Only install the cache model on primary"
if app_label == 'django_cache':
return db == 'cache_primary'
return None
允许在 cache_primary DB 上执行 migration
相关推荐
设置Django缓存首先需要在`settings.py`文件中的`CACHES`配置中进行。Django支持多种缓存后端,其中最常见的包括Memcached和数据库缓存。 1. **Memcached**:作为Django官方推荐的高速缓存系统,Memcached是基于...
在Django框架中,缓存机制是提升性能和效率的关键技术。...正确地选择和配置缓存策略对于优化Django应用的性能至关重要。根据应用的需求和资源情况,可能需要结合多种缓存方式,以实现最佳的性能和稳定性。
### 简单了解Django缓存方式及配置 Django作为一款强大的Python Web框架,在处理高并发场景下的数据查询时,经常会遇到性能瓶颈。其中一个关键的问题在于每次HTTP请求都需要从数据库获取数据,这在访问量较大时会...
**Django 1.6 官方文档** 是学习和使用 Django 的重要资源之一。该文档由 Django 软件基金会官方编写,旨在帮助开发者快速入门并掌握 Django 的核心概念和技术细节。 #### 二、文档结构 文档按照章节组织,主要...
- **Authenticating against Django’s user database from Apache:** 提供如何在Apache服务器上使用Django的用户数据库进行认证的指南。 - **Authentication using REMOTE_USER:** 讲述了如何通过环境变量REMOTE_...
- **API兼容性**:作为一个Django缓存后端,`django-models-redis-cache`应遵循Django的缓存API,这意味着你可以在现有的Django项目中无缝切换到Redis缓存,而无需大幅度修改代码。 - **性能优化**:使用Redis作为...
10. **数据库集成(Database Integration)**:Django支持多种数据库,包括SQLite、MySQL、PostgreSQL等。书中可能讲解如何配置数据库,执行数据库迁移,以及优化数据库查询。 11. **国际化和本地化...
Django提供了多种缓存策略,如基于内存的缓存(如Memcached)、基于文件的缓存或数据库缓存。缓存可以显著提高网站性能,尤其是在处理高并发访问时。 9. **用户认证和授权(Authentication & Authorization)** ...
- **配置Redis作为缓存**: 在 `settings.py` 文件中配置Redis作为Django的缓存系统,例如: ```python CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:...
8. **性能和缓存(Performance and Caching)**:Django支持多种缓存策略,包括页面级缓存、数据库查询缓存等,以提高应用性能。 9. **国际化和本地化(Internationalization and Localization)**:Django内置了...
1. **Django集成Redis**:django-redis库提供了Django缓存系统的Redis后端,允许开发者利用Redis的高速性能作为Django应用的缓存解决方案。它可以用于存储session、模板片段、查询结果等,提高网站性能。 2. **...
我们可以使用Django的缓存机制来优化这个过程: ```python from django.core.cache import cache from django.http import HttpResponse from django.views import View class MyView(View): def get(self, ...
`django_cache_url` 是一个优秀的Django缓存配置工具,它通过URL格式的字符串简化了缓存后端的设置,提供了对多种缓存服务的支持,并且具有良好的Python版本兼容性。开发者可以通过这个库轻松地管理和切换不同类型的...
除了基本的缓存配置,Django还提供了丰富的缓存功能,如页面片段缓存、低级缓存API、模板标签和过滤器等,允许开发者在多个层次上优化应用程序的性能。例如,`@cache_page`装饰器可以缓存整个视图函数的响应,`cache...
**Django是一个强大的开源Web应用框架,它遵循模型-视图-控制器...在实际项目中,还可以利用Django的中间件、缓存、管理后台等功能,进一步提升应用的功能和性能。希望这个实例能帮助你更好地理解和运用Django框架。
8. **数据库与缓存的结合**:Django与Redis的集成使得开发者可以在不修改数据库结构的情况下,利用Redis的高速读写特性,优化对数据库的操作,提升网站的整体性能。 9. **性能监控**:在生产环境中,可以通过监控...
其后端是`DatabaseCache`,配置时,`BACKEND`设为`'django.core.cache.backends.db.DatabaseCache'`,并提供一个`LOCATION`,表示缓存表的名称。 5. **Memcached缓存**: Memcached是一个高性能的分布式内存对象...
7. **数据库管理(Database management)**:Django的数据库工具包括数据库迁移(South还未被集成到1.0.2中)、查询集(QuerySet)API、数据库shell和管理命令。1.0.2版本支持多种数据库后端,如SQLite、MySQL和...