RedisTemplate expiration ne fonctionne pas
Je suis en train de tester expiration de la méthode dans RedisTemplate. Par exemple, j'magasin de session dans le redis, et que d'essayer de récupérer la session et vérifier que les valeurs sont les mêmes. Pour expiration de session j'utilise expirer() la méthode de redisTemplate et pour l'obtention d'expiration de session, j'ai utiliser getExpire() la méthode. Mais ça ne fonctionne pas. Comment puis-je tester la valeur, stockées dans le redis?
//without import and fields
public class Cache() {
private StringRedisTemplate redisTemplate;
public boolean expireSession(String session, int duration) {
return redisTemplate.expire(session, duration, TimeUnit.MINUTES);
}
}
//Test class without imports and fields
public class TestCache() {
private Cache cache = new Cache();
@Test
public void testExpireSession() {
Integer duration = 16;
String session = "SESSION_123";
cache.expireSession(session, duration);
assertEquals(redisTemplate.getExpire(session, TimeUnit.MINUTES), Long.valueOf(duration));
}
}
mais test échoue avec AssertionError:
Prévu :16 Effectif :0
Mise à JOUR:
J'ai pensé, que getExpire() la méthode ne fonctionne pas, mais en fait expirer() méthode ne fonctionne pas. Elle renvoie false. redisTemplate est un printemps Bean qui autocâblés à la classe de test. Il existe de nombreuses autres méthodes de test dans TestCache classe qui fonctionne correctement.
- La clé existe pas, vous voulez à la fin? Votre code ne contient pas de partie dans lequel une clé est créée.
expire
renvoie la valeur true si l'expiration de l'appliquer. Voir redis.io/commandes/pexpire pour plus de détails. - session, qui-je l'envoyer en tant que paramètre à
redisTemplate.expire()
est l'un des principauxString session = "SESSION_123";
- Je voulais dire, si la touche "SESSION_123" existaient au moment de l'épreuve sur votre redis instance.
- Elle doit exister. Dans mon code j'ai expiration de session avec la clé. Je commence redis serveur avant de la classe et de l'arrêter après la classe.
- Je ne sais pas pourquoi, mais redisTemplate retour false de
expire()
méthode
Vous devez vous connecter pour publier un commentaire.
- Je configurer le code suivant pour effectuer un test sur
getExpire()
(jedis 2.5.2, spring-data-redis 1.4.2.La LIBÉRATION):Selon votre Redis configuration, tous les Redis données est allé si vous redémarrez votre Redis instance.
Vous devez également ajouter une assertion à
expireSession
(assertTrue(cache.expireSession(session, duration));
) pour s'assurer que, à l'expiration travaillé.