Redis Hscan

Redis Hscan
Redis Hashes es una colección de campos de cadenas y pares de valor de cadena. Es un candidato ideal para representar entidades del mundo real dentro de la mente. Los hashes son muy eficientes en la memoria y cada uno puede contener más de cuatro mil millones de pares de valor de campo.

Dado que Redis Hashes le permite almacenar grandes cantidades de pares de valor de campo, la iteración sobre este tipo de colección también debe facilitarse. Por lo tanto, la iteración incremental basada en el cursor se ha implementado con el comando HSCAN. En esta guía, nos centraremos más en el comando HSCAN y sus casos de uso.

El comando hscan

El comando HSCAN se usa para iterar sobre los campos y los valores de un hash redis almacenado en una clave dada. No bloquea el servidor como las teclas o los comandos de smembers. En cambio, el HSCAN devuelve una parte de los elementos en cada iteración con una complejidad de tiempo constante O (1). El único inconveniente de este comportamiento es que el comando HSCAN tiene una garantía limitada de los elementos hash devueltos en un momento dado porque el hash se puede cambiar durante las iteraciones. No es el caso con comandos de bloqueo como Smembers, que garantizan que todos los elementos se devolverán en un momento dado.

Sintaxis

El comando HSCAN se deriva del comando de escaneo. Por lo tanto, el comando HSCAN tiene casi la misma sintaxis que el escaneo, excepto que el comando de escaneo no requiere un llave Como el primer argumento porque se itera sobre las claves almacenadas en la base de datos REDIS actual.

HSCAN Hash_Key CURSOR [Patrón de coincidencia] [Count_per_iteration]

Clave hash: La clave del hash.

Cursor: El valor del cursor comienza en 0 y termina en 0 si se ha completado una iteración completa.

FÓSFORO: Un patrón a coincidir al recuperar elementos en cada iteración. Solo los elementos coincidentes se devolverán al cliente.

CONTAR: El número de elementos que se devolverán en cada iteración.

El conjunto de resultados devuelto por iteración contiene un par de elementos. El primero es un entero sin firmar de 64 bits que representa el cursor que se transmitirá a la siguiente llamada. Aparte de eso, se devolverán una variedad de pares de valor de valor de hash.

Caso de uso 01: Obtenga toda la información de un empleado

Supongamos que una empresa necesita mantener los detalles de sus empleados en un almacén de datos con un consumo de memoria limitado. Entonces, el hash redis es la estructura de datos ideal para usar en este caso porque vamos a representar objetos de empleados del mundo real con sus propiedades.

Primero, crearemos un hash redis CompanyAempdetails: 1002 con algunos pares de valor de campo de la siguiente manera. El comando hmset se puede usar para agregar múltiples pares de valor de campo a un hash.

Hmset CompanyAempDetails: 1002 Empid 1002 Empname "Jack Anwar" Empsalary $ 40000 Empaddress "23/4, Redis Avenue, NYC" Empcontact +9569492022 Empage 45 Empage O + EmpVehicle Mercedez EmpDesignation "Ingeniero principal"

Vamos a iterar sobre el objeto del empleado y recuperar toda la información utilizando el comando HSCAN de la siguiente manera. Necesitamos comenzar desde el cursor 0.

HSCAN CompanyAempDetails: 1002 0

Producción

El valor del cursor es 0 en el conjunto de resultados devuelto, lo que significa que todos los elementos han sido devueltos por la primera iteración. Debido a que el número de elementos es pequeño, los hashes redis representan estos elementos utilizando una codificación llena de asignación única. Por lo tanto, hasta que se cumpla un tamaño máximo de paquete o número de elementos, el comando devolverá todos los elementos en el hash. Si se especifica el argumento de recuento, se ignorará en ese caso. Esto se llama iteración completa porque al final de la primera iteración, recibimos los nueve elementos. Si tuviéramos decenas de pares de valor de campo, se representarían como una tabla hash en la memoria. Entonces, se necesitarían varias iteraciones para devolver todos los elementos.

Caso de uso 02: Obtenga el recuento de visitantes para sitios web cuyo dominio de nivel superior sea ".com "

El comando HSCAN se puede usar para filtrar los elementos devueltos en función de una coincidencia de patrón. Debe aprobarse un argumento de la coincidencia.

Supongamos que una empresa necesita rastrear los recuentos de visitantes para sus sitios web. Podemos crear un hash abccompany: visitantes y agregar elementos de la siguiente manera.

hmset abccompany: visitantes "www.a B C.yo "200000" www.HTRS.com "123000" www.kdkdk.com "560000" www.QPSPS.lk "120000" www.dioso.com "90000

Podemos usar el comando hgetall para verificar cómo se ve el hash.

hgetall abccompany: visitantes

Ahora la compañía tiene el requisito de iterar sobre este hash y recuperar los recuentos de visitantes para sitios web con el ".com " dominio de nivel superior. Pasemos el argumento del partido al comando HSCAN de la siguiente manera.

HSCAN ABCCompany: Visitantes 0 Match *.com*

Esto idealmente debería devolver a tres miembros de cinco miembros, como se muestra en lo siguiente.

Conclusión

En resumen, el comando HSCAN se usa para iterar sobre una colección de pares de valor de campo hash. Este comando se deriva del comando de escaneo principal pero con un ligero cambio en el primer argumento que se aprobará donde HSCAN toma la clave hash como el primer argumento. Como se discutió en los casos de uso, el comando HSCAN se puede usar de diferentes maneras especificando los argumentos de coincidencia y recuento, donde puede recuperar elementos que coinciden con un patrón específico y limiten el recuento de elementos devuelto por iteración. En general, el comando HSCAN puede ser útil al recuperar elementos de una colección sin bloquear el servidor o el cliente.