recherche

Maison  >  Questions et réponses  >  le corps du texte

java - spring data redis 超时设置无效的问题

Long expireTime=redisTemplate.boundValueOps(key).getExpire();

        int countNow = Integer.valueOf(redisTemplate.boundValueOps(key).get());

获取超时时间expiretime 为0
但是我他妈的居然能拿到key对应的值,是不是redis存磁盘了,还是redis删除数据的机制原因?测试的能行,生产环境就不行了!!

PHP中文网PHP中文网2888 Il y a quelques jours390

répondre à tous(1)je répondrai

  • 迷茫

    迷茫2017-04-17 17:36:12

    Le serveur Redis, les paramètres du cluster, le maître-esclave, l'esclave n'a pas de données, la raison est inconnue. Utilisez un serveur virtuel pour transférer les données vers le serveur Redis principal. La clé définie n'est pas visible sur le serveur principal. La clé virtuelle ne peut pas être lue, mais elle peut être récupérée. Il n'y a aucune donnée dans le service Redis esclave. La clé est que vous pouvez obtenir que le délai d'expiration soit nul grâce à la méthode, mais vous pouvez obtenir la valeur correspondant à la clé. Maintenant qu'il existe d'autres serveurs Redis, où sont stockées les données ? Pourquoi la valeur d'expiration est-elle nulle, et puis-je toujours obtenir la valeur correspondant à la clé ? ? ?
    Enfin, après avoir arrêté le Redis esclave, redémarré le serveur maître et pointé l'IP vers le serveur Redis maître, le problème a été résolu.
    La raison est inconnue.
    Où sont passées les données ?

    Supplément :
    Si vous définissez une clé instable avec une valeur-clé qui a un délai d'expiration, veuillez faire attention ! Si vous utilisez la méthode consistant à définir expiretime sur 0 pour supprimer la clé, redis risque de ne pas la supprimer immédiatement.
    Utilisez la méthode hasKey de Spring Data Redis pour déterminer si la clé existe, et vous tomberez alors dans un piège, car même si le délai d'expiration est 0, la clé n'a probablement pas été supprimée
    Redis utilise la méthode. pour les clés expirées Expiration différée : déterminez si la clé a expiré lors de l'accès à la clé. Si elle expire, effectuez le traitement d'expiration. Deuxièmement, les clés volatiles sont échantillonnées et testées toutes les secondes. S'il existe des clés expirées, toutes les clés expirées sont traitées.
    Nous n'avons aucune idée à quels paramètres cette vitesse de patrouille est liée et à quel point elle est efficace. Par conséquent, lorsque vous définissez une clé instable et utilisez hasKey pour porter un jugement, veuillez noter que vous devez obtenir le délai d'expiration de la clé, puis porter un jugement vous-même.

    La première édition de "Redis Design and Implementation" contient des explications sur les principes. Si vous êtes intéressé, vous pouvez la rechercher

    .

    répondre
    0
  • Annulerrépondre