170 похожих чатов

Хочу захэшировать данные юзеров из монго в оперативке, но чтобы

при изменении вручную в монго изменялось и в хэше, как быть?)

17 ответов

19 просмотров

1. Не захешировать, а закешировать 2. Та ну, лучше не надо, кеш это всегда лишний гемор по его инвалидации, если можно без него, то лучше без него

Andrej- Автор вопроса

Много операций с данными юзеров, каждый раз тянуть из базы значение? Мне кажется, что может быть затор...

Andrej- Автор вопроса
Denis Pobedrya
1. Не захешировать, а закешировать 2. Та ну, лучше...

Бот перенаправляет юзерам сообщения в зависимости от настроек каждого из них

Andrej
Много операций с данными юзеров, каждый раз тянуть...

Смотря что понимается под "каждый раз". В общем случае с базой работают несколько программ (например несколько процессов твоей программы), которые в общем случае не знают о действиях друг друга, поэтому да, каждый раз как нужны свежие данные, делаем запрос

Andrej- Автор вопроса
Denis Pobedrya
Смотря что понимается под "каждый раз". В общем сл...

Есть 100 видов сообщений от бота, у каждого юзера стоят "галочки", какие из них получать. В 1 секунду может прийти 20 сообщений. При получении сообщения, программа запрашивает из бд настройки всех юзеров и делает рассылку, в зависимости от настроек.

Andrej
Есть 100 видов сообщений от бота, у каждого юзера ...

а как приложение узнает что настройки поменялись?

Andrej- Автор вопроса
Denis Pobedrya
а как приложение узнает что настройки поменялись?

Я думал настройки поместить в класс (кэш) и может сделать метод в нем - обновить кэш. И когда я обновил в базе настройки вручную, то отправил бы команду (как админ) в приложение , которая вызывала бы метод - обновить кэш

раз в n время обновляй данные в кеше, но не думаю что он тебе вообще нужен

ZeN
раз в n время обновляй данные в кеше, но не думаю ...

Обновление кэша по расписанию. Какая наивность. 😊

Andrej
В чем наивность?

В том, что инвалидацию кеша почти никогда нельзя завязывать только на таймер и если так делать, рано или поздно эта мина в коде сдетонирует.

Andrej- Автор вопроса
Andrej
А на что ее завязывать?

Очевидным образом — на изменение исходных данных.

Andrej- Автор вопроса
evle
Очевидным образом — на изменение исходных данных.

Мне надо, чтоб в кэше отображались изменения бд, вносимые вручную. В чем может быть проблема при таймере..?

evle
В том, что инвалидацию кеша почти никогда нельзя з...

не вижу проблем во многих случаях завязывать именно на таймер. Если у вас критчно получать актуальные аднные, то кэш возможно вообще не стоит юзать, иначе это сдетонирует рано или поздно

Tishka17
не вижу проблем во многих случаях завязывать именн...

Ну, если так получилось, что буква C из CAP не так критична, то да, можно себе позволить. Но это надо знать на входе и проектировать соотвествующим образом.

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

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта