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

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

Django中如何配置Database缓存?的更多相关文章

  1. Redis缓存在django中的配置

    django  settings中的配置 # 缓存 CACHES = { "default": { "BACKEND": "django_redis. ...

  2. django中路由配置的正则

    在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...

  3. django中日志配置

    # ======日志配置====== # 错误优先级:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL # Djang ...

  4. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

  5. django中的缓存以及跨域

    django中的缓存 先来了解以下问题

  6. 在django中使用Redis存取session

    一.Redis的配置 1.django的缓存配置 # redis在django中的配置 CACHES = { "default": { "BACKEND": & ...

  7. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  8. Django中cookie&session的实现

    1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...

  9. Django中配置用Redis做缓存和session

    django-redis文档: http://django-redis-chs.readthedocs.io/zh_CN/latest/# 一.在Django中配置 # Django的缓存配置 CAC ...

随机推荐

  1. git总结

    1.先画个图,先对git的操作有个直观了解 2.分析下git中文件是怎么存储的 正如下面所示git存储不是每次更改就会产生一个新的文件,而是产生一个版本,这个版本对应着记录每个文件的不同情况 具体的存 ...

  2. c++中两种常量方法的比较

    [c++]在C++中定义常量的两种方法的比较   常量是定以后,在程序运行中不能被改变的标识符.C++中定义常量可以用#define .const 这两种方法.例如: #define PRICE 10 ...

  3. android 入门 001 (界面布局)

    学android 首先学会怎么布局界面,我开始是学.net的,因工作需要学习一下安卓,外行写的不好,请多多见谅指教 .这一篇文章然我们来学习一下四种布局吧! RelativeLayout(相对布局) ...

  4. SqlSever基础 dateadd month 增加五个月

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  5. PCL点云库:对点云进行变换(Using a matrix to transform a point cloud)

    点云数据可以用ASCII码的形式存储在PCD文件中(关于该格式的描述可以参考链接:The PCD (Point Cloud Data) file format).为了生成三维点云数据,在excel中用 ...

  6. C#:常规属性和自动实现的属性

    根据属性的实现方式,属性可分为自动实现的属性和常规属性. 常规属性需要具体的人为的实现get访问器或者set访问器,而且一般需要有一个字段与之相对应:而自动实现的属性的get和set访问器的实现部分被 ...

  7. Python入门-多行语句

    1. Python语句中一般以新行作为为语句的结束符. 但是我们可以使用斜杠( \)将一行的语句分为多行显示. 2. 语句中包含[], {} 或 () 括号就不需要使用多行连接符. days = [' ...

  8. splay学习

    今天学习了一下spaly..... 感觉除了比较难打,比较难调,但还是很好理解的啊.... 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: ...

  9. .net 常用Response.ContentType

    来源:http://blog.csdn.net/navy235/article/details/5982319 不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 ...

  10. Python基础学习笔记(七)常用元组内置函数

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-tuples.html 3. http://www.liaoxue ...