GAE MemCache поведение put () + ADD_ONLY_IF_NOT_PRESENT - PullRequest
1 голос
/ 10 ноября 2011

Метод put(...) API memcahe GAE принимает в качестве аргумента (в одной из его перегруженных реализаций) аргумент SetPolicy.В Javadocs здесь говорится, что если вы выбрали «ADD_ONLY_IF_NOT_PRESENT» в качестве политики, и я цитирую:

«полезно, чтобы избежать условий гонки.»

Мои вопросы:

  1. что происходит с истекшим значением, которое было установлено с тем же ключом?Если я добавлю в memcache что-то вроде (ключ = 1, значение = все что угодно), то срок действия этой записи истечет, а затем я попытаюсь добавить (ключ = 1, значение = все что2), используя ADD_ONLY_IF_NOT_PRESENT, что2 добавлено в кэш или нет?

  2. Что значит «полезно для условий гонки»?В частности, означает ли это, что если я использую put(...) с ADD_ONLY_IF_NOT_PRESENT SetPolicy, мне больше не нужно использовать getIdentifiable и putIfUntouched , чтобы избежать условий гонки при одновременном добавлении материалав Memcache?

1 Ответ

1 голос
/ 11 ноября 2011
  1. Если срок действия истекает, он больше не находится в memcache, поэтому RPC установит его.

  2. Если вы сделаете get, сделайте только путесли ничего не было, вы ввели условие гонки, при котором кто-то другой мог бы поместить данные во время проверки.Выполнение одной операции позволяет избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...