Question

Quelle est la date d'expiration maximale de la clé memcached?

Si je ne fournis pas de date d'expiration et que le cache est plein, que se passe-t-il?

Était-ce utile?

La solution

Vous pouvez définir une date d'expiration de clé en fournissant un horodatage Unix au lieu d'un nombre de jours. Cette date peut être supérieure à 30 jours dans le futur:

  

Les délais d'expiration sont spécifiés en secondes non signées. Ils peuvent être réglés de 0, ce qui signifie "n'expire jamais", à 30 jours (60 * 60 * 24 * 30). Toute heure supérieure à 30 jours est interprétée comme une date d’horodatage Unix. Si vous souhaitez faire expirer un objet le 1er janvier de l’année prochaine, procédez comme suit.

     

https://github.com/memcached/memcached/wiki/Programming#expiration

Mais, comme vous le dites , si vous & # 8217; Si vous réglez l’expiration de la clé sur une durée plutôt que sur une date, le maximum est de 2 592 000 secondes ou 30 jours.

Autres conseils

Si vous ne fournissez pas l'expiration et que le cache est plein, les valeurs-clés les plus anciennes sont expirées en premier:

  

La mémoire est également récupérée lorsqu'il est temps de stocker un nouvel élément. S'il n'y a pas de morceaux libres ni de pages libres dans la classe de dalles appropriée, memcached regardera à la fin de la LRU pour qu'un élément "récupère". Il recherchera les derniers éléments de la liste des éléments qui ont déjà expiré et sont donc libres de les réutiliser. Toutefois, s’il ne parvient pas à trouver un élément périmé, il "expulsera" un qui n'a pas encore expiré. Ceci est ensuite noté dans plusieurs compteurs statistiques

https://github.com/memcached/memcached / wiki / UserInternals # quand-sont-les-articles-expulsés

Non, il n'y a pas de limite. La limite de 30 jours est si vous donnez le nombre de secondes qu'il devrait y rester, mais si vous donnez un horodatage, il n'y a que la valeur max long ou int sur la machine qui peut être une limite.

- > set ('clé', 'valeur', heure () + 24 * 60 * 60 * 365) fera que la clé reste là pendant un an par exemple, mais oui si le cache est plein ou redémarré entre-temps, cette valeur peut être supprimée.

  

Un délai d'expiration, en secondes. Peut durer jusqu'à 30 jours. Après 30 jours,   est traité comme un horodatage Unix d'une date exacte.

     

https://code.google.com/p/memcached/wiki/ NewCommands # Standard_Protocol

OK, j’ai appris que le nombre de secondes ne pouvait pas dépasser 2592 000 (30 jours). Le délai d’expiration maximal est donc de 30 jours.

On dirait que certaines réponses ne sont plus valides.

J'ai découvert qu'une clé n'est pas définie du tout lorsque la durée de vie est trop élevée. Par exemple, 2992553564 .

Testé avec le code PHP suivant:

var_dump($memcached->set($id, "hello", 2992553564);  // true
var_dump($memcached->get($id));                      // empty!

var_dump($memcached->set($id, "hello", 500);  // true
var_dump($memcached->get($id));               // "hello"

La version est memcached 1.4.14-0ubuntu9 .

Sur laravel config.session.lifetime , paramètre qui, s'il est défini pour être équivalent à 30 jours ci-dessus, sera considéré comme un horodatage (cela générera une erreur de non-correspondance de jeton à chaque fois que memcached est utilisé).

Pour répondre, l’expiration de memcached peut être définie à tout moment. (Le paramètre par défaut de Laravel (sur la v5.0) vous fixera un horodatage déjà expiré). Si vous ne l’avez pas défini, le défaut sera utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top