Кэш объектов DAX и кэш запросов не синхронизированы; нет ли способа указать кешу запросов на удаление неверных данных?

Согласно DynamoDBDAX документация, DAX поддерживает два отдельных кэша: один для объектов и один для запросов. Что нормально, я думаю.

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

Это довольно ограниченно, и, кажется, нет простого способа обойти это.

Кто-то сказал мне, что я не знаю, о чем говорю, и есть способ посоветовать DAX выселить значения кеша запросов.

2 ответа

Хотелось бы получить лучший ответ, но, к сожалению, в настоящее время нет способа обновить значения кэша запросов, кроме истечения срока действия TTL. Значения кэша элементов немедленно обновляются любыми запросами Put или Update, выполненными через DAX, но не в случае каких-либо изменений, внесенных непосредственно в DynamoDB.

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

В соответствии с документацией Dynamo Db ваш запрос на обновление должен передаваться через DAX.

DAX поддерживает следующие операции записи: PutItem, UpdateItem, DeleteItem и BatchWriteItem. Когда вы отправляете один из этих запросов в DAX, он делает следующее:

DAX отправляет запрос в DynamoDB.

DynamoDB отвечает на DAX, подтверждая, что запись прошла успешно.

DAX записывает элемент в его кэш элементов.

DAX возвращает успех запрашивающей стороне.

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

Поэтому вместо использования метода update Динамо дБ использовать UpdateItem,

Чтобы больше копать можно ссылаться по этой ссылке

Другие вопросы по тегам