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/
Django中如何配置Database缓存?的更多相关文章
- Redis缓存在django中的配置
django settings中的配置 # 缓存 CACHES = { "default": { "BACKEND": "django_redis. ...
- django中路由配置的正则
在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...
- django中日志配置
# ======日志配置====== # 错误优先级:NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL # Djang ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...
- django中的缓存以及跨域
django中的缓存 先来了解以下问题
- 在django中使用Redis存取session
一.Redis的配置 1.django的缓存配置 # redis在django中的配置 CACHES = { "default": { "BACKEND": & ...
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Django中cookie&session的实现
1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...
- Django中配置用Redis做缓存和session
django-redis文档: http://django-redis-chs.readthedocs.io/zh_CN/latest/# 一.在Django中配置 # Django的缓存配置 CAC ...
随机推荐
- SharePoint自动化系列——Select-option标签的定位方法总结
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ C#中通过Selenium定位页面上的select-option结构,尝试了以下几种方法,均没有生 ...
- 修改idea的运行内存
1.如果本地的jdk是32位的,那么最大的内存只能支持到1024 2.测试jdk位数 public class Test { public static void main(String[] args ...
- flume ng系列之——flume安装
flume版本:1.5.0 1.下载安装包: http://www.apache.org/dyn/closer.cgi/flume/1.5.0/apache-flume-1.5.0-bin.tar.g ...
- Mysql基础语法
mysql SELECT VERSION(), CURRENT_DATE, now();select user(); create database pets;show databases; use ...
- 【leetcode❤python】Move Zeroes
#-*- coding: UTF-8 -*- #filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,#把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤.最终一 ...
- UVALive 6500 Boxes
Boxes Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Pract ...
- File Checksum Integrity Verifier
Microsoft (R) File Checksum Integrity Verifier V2.05 README file =================================== ...
- 卡尔曼滤波—Simple Kalman Filter for 2D tracking with OpenCV
之前有关卡尔曼滤波的例子都比较简单,只能用于简单的理解卡尔曼滤波的基本步骤.现在让我们来看看卡尔曼滤波在实际中到底能做些什么吧.这里有一个使用卡尔曼滤波在窗口内跟踪鼠标移动的例子,原作者主页:http ...
- [HDOJ5787]K-wolf Number(数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5787 题意:求[L,R]区间内的数字,使得所有长度为k的子数列内所有数位都不同. K<=5的所以 ...
- 个人简历制作(Dreamweaver)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...