有些业务场景,需要对数据库进行频繁的读操作,但是写操作比较少。造成数据库压力较大。为减轻数据库压力,可以利用django model信号量以及redisco实现数据库读写分离。
基本思路
读使用redisco从redis中读取数据,写使用django model将数据写入数据库,利用django model的信号量来触发数据库中的修改同步至redis。由于redis基于内存,这里读写分离的表中数据量不能太大,否则会占用过多内存。关于django model信号量以及redisco,网上教程较多,此处不再赘述。
具体实现
在models.py中定义django model模型
from django.db import models
class ArticleModel(models.Model):
class Meta:
db_table = 'article'
title = models.CharField(max_length=100, primary_key=True)
content = models.CharField(max_length=200)
def __str__(self):
return self.title
在models.py中定义redisco模型,其字段与django model模型完全一致
from redisco import models as redis_models
class ArticleRedisModel(redis_models.Model):
title = redis_models.CharField(max_length=100)
cont