sql >> Base de Datos >  >> NoSQL >> Redis

Escaneo Redis saltando claves

¡En efecto! Eso es porque SCAN funciona de esa manera, citando la documentación de Redis:

Sin embargo, mientras que los comandos de bloqueo como SMEMBERS pueden proporcionar todos los elementos que forman parte de un conjunto en un momento dado, la familia de comandos SCAN solo ofrece garantías limitadas sobre los elementos devueltos ya que la colección que iteramos incrementalmente puede cambiar durante el proceso de iteración.

Sin embargo, debido a que SCAN tiene muy poco estado asociado (solo el cursor), tiene los siguientes inconvenientes:Un elemento determinado puede devolverse varias veces. Depende de la aplicación manejar el caso de elementos duplicados , por ejemplo, solo usando los elementos devueltos para realizar operaciones que son seguras cuando se vuelven a aplicar varias veces.

Por lo tanto, es posible que desee usar array_unique($keys) después del foreach .

Para entender por qué la iteración funciona de esa manera lo mejor es leer esta parte de la documentación de Redis .