Я использую redis для аналитики в приложении ruby on rails, размещенном на heroku, и я думаю о том, как мне справиться с таймаутами redis. Тайм-ауты Redis не случаются слишком часто, но они случаются. Вот где я бы с ними справился:
begin
Timeout::timeout(5) {
# an operation that modifies data in redis db
}
rescue Timeout::Error
# do something
end
Мне интересно: если тайм-аут redis и выполнение выбрасываются в блок восстановления, возможно ли, что данные в базе данных redis были изменены во время этого? Есть ли гарантия, что он не был изменен (в этом случае я мог бы создать фоновое задание, чтобы повторить эту операцию позже)?