Разумно ли здесь применить redis?

Скрипт берёт из БД пачку заданий юзера и обрабатывает её. По мере выполнения со счёта юзера должны списываться деньги. Выполнение каждого задания стоит очень дёшево, например 0.1 копейки, естественно, могут происходить всякие нештатные ситуации, поэтому хочется манипуляции со счётом и данные о последнем выполненном задании фиксировать моментально в процессе обработки.
Имеет ли смысл записывать ход работы в redis что бы не обновлять mysql много раз в секунду?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
По мере выполнения со счёта юзера должны списываться деньги.


Храните счета пользователей как лог транзакций:

|  user_id | amount | 
| 1        |  1000  |
| 1        |  -150  |
| 1        |  -240  |


и тогда и на производительность это никак сказываться не будет (последовательная запись штука ооочень быстрая.

и данные вы никогда не потеряете. А остаток на счету пользователя всегда можно вычислить как SUM(amount).

Что до вашего вопроса - проще будет использовать rabbitmq, но для начала - у вас есть проблемы с производительностью или вы просто развлекаетесь?
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Любые операции, связанные с деньгами, необходимо фиксировать в виде транзакций, то есть в реляционной БД.
Что касается хранения данных о процессе выполнения задания в Redis, то почему бы и нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы