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

  答案:可以的

  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/

时间: 2024-11-05 00:58:38

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

django中xamin配置

首先用pipenv安装xadmin pipenv install xadmin 下载成功之后会报错 Complete output from command python setup.py egg_info: Traceback (most recent call last): File "", line 1, in File "C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\setup.py",

西游之路——python全栈——django中models配置

目录 Django支持多种数据库,sqlite,mysql,oracle等,其默认数据库是sqlite 在settings文件中可以发现: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } 其默认数据库是sqlite3 要想使用其他数据库,需要修改相应的引擎和配置 (1)sqlite: 'ENGINE': 'dja

Django中一些配置

//url.py import xadmin from MxShop.settings import MEDIA_ROOT from django.views.static import serve from rest_framework.documentation import include_docs_urls url(r'^xadmin/',xadmin.site.urls), url(r'^media/(?P<path>.*)$',serve,{"document_root&

在Hibernate中如何配置二级缓存。

缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中, 当以后要使用某个对象时,首先查询缓存中是否有这个对象, 如果有则使用缓存中的对象,如果没有则去查询数据库, 并将查询出来的对象保存在缓存中,以便下次使用, 而Hibernate中一级缓存session的作用不够明显, 通常用Hibernate的二级缓存,Hibernate的二级缓存是全局缓存. 借助第三方缓存: 比如ehcache.oscache..... 首先需要打开二级缓存,比如用ehcache: <!--         打开二

python django中如何配置mysql参数

在成功安装python-mysql后,开始配置django的mysql连接配置 vi settings.py 修改 DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }} 为 DATABASES = {    'default':{        'ENGINE':'django.d

Django中mysql配置设置

settings文件中设置:你的数据库名称在设置之前先确保已经创建了这个数据库 DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'books', #数据库名称 'USER':'root', #数据库用户名 'PASSWORD':'123456', # 数据库密码 'HOST':'', #数据库主机,留空默认为localhost 'PORT':'3306', #数据库端口 } } 之前 DATABASES设

Django html相关配置

本文和大家分享的主要是django中 html配置相关内容,一起来看看吧,希望对大家学习django有所帮助. html文件头要加上下面代码,意思要预加载配置文件中的staticfiles文件 {% load staticfiles %} css,js,img文件配置 其中,static为配置文件目录 <script scr={% static 'js/example.js' %}></script> <link rel="staticsheet" typ

django中缓存配置

# ======缓存配置====== CACHES = { ## 虚拟缓存,开发调试版本,此为开始调试用,实际内部不做任何操作 # 'default': { # 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎 # 'TIMEOUT': 300, # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期) # 'OPTIONS':{ # 'MAX_ENTRIES': 300,# 最大缓存个数(默认300) #

Django中redis的使用方法(包括安装、配置、启动)

一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2.8.tar.gz 3.复制,放到/usr/local目录下 sudo mv ./redis-3.2.8 /usr/local/redis 4.进入到redis目录下 cd /usr/local/redis/ 5.生成 sudo make 6.测试,时间会比较长 sudo make test 7.安装