Есть ли какой-то механизм для работы с данными в высоком параллелизме?
Сначала мы использовали mongodb, и он решает проблему с помощью атомарных обновлений. Но обновляет частоту примерно до 1000 \ секунд, и мы настраиваем Redis, чтобы помочь монго и синхронизации между ними. Это работает хорошо, но у нас есть проблема согласованности с Redis.
Например:
Оба запроса получают один и тот же объект? измените данные и сохраните их при выходе.
Когда мы использовали mongodb — мы можем сделать — частичные обновления объекта, но с помощью redis — мы не можем.
Можно ли манипулировать одним и тем же объектом (данными) из нескольких процессов одновременно и не перезаписать его целиком — только часть?
Единственный способ, которым я нахожу — создать механизм блокировки и ждать, пока он существует, прежде чем получить его во второй раз.
Redis не имеет такой механизм (частичное обновление), как вы хотите,
но в качестве альтернативы,
Вы можете написать сценарии Lua, чтобы избежать проблем с параллелизмом.
В сценарии
Вы можете сначала прочитать значение, манипулировать им, как хотите, и, наконец, снова сохранить значение.
Redis гарантирует, что скрипт будет выполняться атомарно,
так что вам не нужен механизм блокировки с этим сценарием. (*)
Других решений пока нет …