`
小麦麦子
  • 浏览: 30682 次
文章分类
社区版块
存档分类
最新评论

Django缓存优化之Database

阅读更多

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分别存储到不同数据库?

  答案:可以的

  1Mutiple Database Caches: createcachetable会为每个 Cache 创建一张缓存表

  2Mutiple Databases: createcachetable会去查找数据库routers中的allow_migrate()方法,检查是否允许migrate

  3createcachetable默认使用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_readdb_for_writeallow_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

 

原文链接:http://www.maiziedu.com/wiki/django/database/

分享到:
评论

相关推荐

    Django缓存系统实现过程解析

    设置Django缓存首先需要在`settings.py`文件中的`CACHES`配置中进行。Django支持多种缓存后端,其中最常见的包括Memcached和数据库缓存。 1. **Memcached**:作为Django官方推荐的高速缓存系统,Memcached是基于...

    浅谈Django的缓存机制

    在Django框架中,缓存机制是提升性能和效率的关键技术。...正确地选择和配置缓存策略对于优化Django应用的性能至关重要。根据应用的需求和资源情况,可能需要结合多种缓存方式,以实现最佳的性能和稳定性。

    简单了解django缓存方式及配置

    ### 简单了解Django缓存方式及配置 Django作为一款强大的Python Web框架,在处理高并发场景下的数据查询时,经常会遇到性能瓶颈。其中一个关键的问题在于每次HTTP请求都需要从数据库获取数据,这在访问量较大时会...

    Django1.6 官方文档

    **Django 1.6 官方文档** 是学习和使用 Django 的重要资源之一。该文档由 Django 软件基金会官方编写,旨在帮助开发者快速入门并掌握 Django 的核心概念和技术细节。 #### 二、文档结构 文档按照章节组织,主要...

    Django documentation(英文版).pdf

    - **Authenticating against Django’s user database from Apache:** 提供如何在Apache服务器上使用Django的用户数据库进行认证的指南。 - **Authentication using REMOTE_USER:** 讲述了如何通过环境变量REMOTE_...

    Python库 | django-models-redis-cache-2.5.8.tar.gz

    - **API兼容性**:作为一个Django缓存后端,`django-models-redis-cache`应遵循Django的缓存API,这意味着你可以在现有的Django项目中无缝切换到Redis缓存,而无需大幅度修改代码。 - **性能优化**:使用Redis作为...

    Pro django

    10. **数据库集成(Database Integration)**:Django支持多种数据库,包括SQLite、MySQL、PostgreSQL等。书中可能讲解如何配置数据库,执行数据库迁移,以及优化数据库查询。 11. **国际化和本地化...

    django 开发文档整理, 中文版

    Django提供了多种缓存策略,如基于内存的缓存(如Memcached)、基于文件的缓存或数据库缓存。缓存可以显著提高网站性能,尤其是在处理高并发访问时。 9. **用户认证和授权(Authentication & Authorization)** ...

    Django商城项目前台项目

    - **配置Redis作为缓存**: 在 `settings.py` 文件中配置Redis作为Django的缓存系统,例如: ```python CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:...

    Django-2.2.5.tar.gz

    8. **性能和缓存(Performance and Caching)**:Django支持多种缓存策略,包括页面级缓存、数据库查询缓存等,以提高应用性能。 9. **国际化和本地化(Internationalization and Localization)**:Django内置了...

    Python库 | django-redis-4.11.0.tar.gz

    1. **Django集成Redis**:django-redis库提供了Django缓存系统的Redis后端,允许开发者利用Redis的高速性能作为Django应用的缓存解决方案。它可以用于存储session、模板片段、查询结果等,提高网站性能。 2. **...

    Django如何实现内容缓存示例详解

    我们可以使用Django的缓存机制来优化这个过程: ```python from django.core.cache import cache from django.http import HttpResponse from django.views import View class MyView(View): def get(self, ...

    Python库 | django_cache_url-0.5.0-py2.py3-none-any.whl

    `django_cache_url` 是一个优秀的Django缓存配置工具,它通过URL格式的字符串简化了缓存后端的设置,提供了对多种缓存服务的支持,并且具有良好的Python版本兼容性。开发者可以通过这个库轻松地管理和切换不同类型的...

    Django实现内容缓存实例方法

    除了基本的缓存配置,Django还提供了丰富的缓存功能,如页面片段缓存、低级缓存API、模板标签和过滤器等,允许开发者在多个层次上优化应用程序的性能。例如,`@cache_page`装饰器可以缓存整个视图函数的响应,`cache...

    django实现的一个mysql操作实例

    **Django是一个强大的开源Web应用框架,它遵循模型-视图-控制器...在实际项目中,还可以利用Django的中间件、缓存、管理后台等功能,进一步提升应用的功能和性能。希望这个实例能帮助你更好地理解和运用Django框架。

    Python库 | django-redis-cache-1.5.3.tar.gz

    8. **数据库与缓存的结合**:Django与Redis的集成使得开发者可以在不修改数据库结构的情况下,利用Redis的高速读写特性,优化对数据库的操作,提升网站的整体性能。 9. **性能监控**:在生产环境中,可以通过监控...

    Django中提供的6种缓存方式详解

    其后端是`DatabaseCache`,配置时,`BACKEND`设为`'django.core.cache.backends.db.DatabaseCache'`,并提供一个`LOCATION`,表示缓存表的名称。 5. **Memcached缓存**: Memcached是一个高性能的分布式内存对象...

    django 1.0.2离线文档

    7. **数据库管理(Database management)**:Django的数据库工具包括数据库迁移(South还未被集成到1.0.2中)、查询集(QuerySet)API、数据库shell和管理命令。1.0.2版本支持多种数据库后端,如SQLite、MySQL和...

Global site tag (gtag.js) - Google Analytics