Redis
 sql >> Base de données >  >> NoSQL >> Redis

Touches de saut d'analyse Redis

En effet! C'est parce que SCAN fonctionne de cette façon, citant la documentation Redis :

Cependant, alors que les commandes bloquantes comme SMEMBERS sont capables de fournir tous les éléments qui font partie d'un ensemble à un moment donné, La famille de commandes SCAN n'offre que des garanties limitées sur les éléments renvoyés puisque la collection que nous itérons de manière incrémentielle peut changer pendant le processus d'itération.

Cependant, étant donné que SCAN a très peu d'état associé (juste le curseur), il présente les inconvénients suivants :Un élément donné peut être renvoyé plusieurs fois. C'est à l'application de gérer le cas des éléments dupliqués , par exemple en utilisant uniquement les éléments renvoyés afin d'effectuer des opérations sûres lorsqu'elles sont réappliquées plusieurs fois.

Donc, vous voudrez peut-être utiliser array_unique($keys) après le foreach .

Pour comprendre pourquoi l'itération fonctionne de cette façon, le mieux est de lire cette partie de la documentation Redis .