#django #sqlite #redis
#django #sqlite #redis
Вопрос:
В настоящее время я использую базу данных SQLite по умолчанию для хранения сообщений, так как я использую каналы… Я обновляю базу данных при каждой отправке и получаю сигнал от WebSocket. но это было бы слишком дорого, когда трафик будет большим, так как при каждой отправке и получении я взаимодействую с Django ORM есть ли какой-нибудь другой эффективный способ?
class Room(models.Model):
name = models.CharField(max_length=150)
group = models.CharField(max_length=150,null=True)
def __str__(self):
return self.name
class Message(models.Model):
room = models.ForeignKey('Room',null=False,blank=False,on_delete=models.CASCADE)
sender = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
message = models.TextField()
def __str__(self):
return self.message
Комментарии:
1. Какой объем трафика вы ожидаете получить? Что вы могли бы рассмотреть, так это, возможно, использование поставщика БД, который лучше обрабатывает подобные транзакции, например postgres, или внедрение службы кэширования, такой как Redis или Celery, взаимодействующей с вашей БД только периодически.
2. В настоящее время я делаю проект для колледжа, но в будущем хотел бы поднять его на новый уровень, и есть ли какие-либо лучшие ресурсы для Redis? в настоящее время я использую его только как базу данных в памяти, но не знаю, как реализовать его для кэширования сообщений и выполнения всех операций с творогом спасибо за небольшое понимание
3. Redis по определению является базой данных в памяти. Вам понадобится планировщик заданий и ставить в очередь сигнал на ваш websocket с каждым новым сообщением, затем объединять сообщения в вашем кэше и периодически сохранять их в БД. medium.com/@channeng /…