#python #node.js #database #redis
#python #node.js #База данных #redis
Вопрос:
Я хочу сохранить довольно сложный объект JSON в Redis, но я не вижу, как я могу сделать транзакцию атомарной, поскольку мне нужно будет получить, отредактировать, а затем установить. За время, необходимое для редактирования, мог быть вызван другой get в другом месте, который в конечном итоге перезапишет мои данные.
Я просмотрел конвейеры, но, похоже, они не будут полезны, потому что команды выполняются одновременно? Невозможно проанализировать / отредактировать перед набором?
Я также не могу найти способ заблокировать документ / хэш во время этого процесса.
Комментарии:
1. Не могли бы вы подробнее рассказать?
Ответ №1:
Здесь у вас есть три варианта:
- Используйте транзакции Redis:
WATCH mykey
GET mykey
// change the JSON
MULTI
SET mykey
EXEC
- Используйте сценарий Lua:
- Используйте модуль Redis RedisJSON, который поддерживает атомарные команды, такие как:
Комментарии:
1. Спасибо за это, я пошел с RedisJSON, и он идеально подходит для моих нужд.