Políticas de expiração do AppEngine Memcache

Eu estava esperando o seguinte código do AppEngine:

MemcacheService memcache = MemcacheServiceFactory.getMemcacheService();
memcache.put("Foo", "Bar", Expiration.onDate(new Date(1)));
System.out.println(memcache.get("Foo"));
System.out.println(memcache.put("Foo", "Baz", null, SetPolicy.ADD_ONLY_IF_NOT_PRESENT));

para produzir a seguinte saída:

null
true

I.e. ao definir uma data de validade em 1970 ao colocar a entrada no cache, esperava que ela fosse descartada imediatamente e estivesse disponível para reutilização.

Em vez disso, recebo:

Bar
false

I.e. a entrada ainda está por aí.

Agora, o estranho é que, se eu mudar meu código paraExpiration.onDate(new Date()) (sem1), ou seja, definindo a expiração para a direita antes de realizar a operação de colocação, euFaz obtenha o esperado "nulo, verdadeiro".

O Memcache de alguma forma interpreta datas de vencimento muito distantes no passado como relativas ao agora e não ao absoluto ??? Mas mesmo isso não se encaixaria no resultado, porque 1ms da opção ainda deveria ter expirado no momento em que a exibição chegar?!?

Qual valor posso definir Expiração para garantir uma expiração imediata (e exclusão!) Da entrada de venda? Lembre-se de que o simples uso do carimbo de data / hora atual pode não funcionar de maneira confiável, pois o AppEngine não oferece nenhuma garantia de sincronização de relógio entre os servidores!

Sei que querer fazer isso parece absurdo à primeira vista (por que não excluí-lo?), Mas gostaria de usá-lo aqui:AppEngine Memcache atômico get-and-delete (frase logo acima de "Conclusão").

questionAnswers(1)

yourAnswerToTheQuestion