Controlador Redis
Esta documentación explica la implementación del controlador Redis y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantics. Redis es un almacén clave-valor, así que el controlador agrupa las claves en entidades según su prefijo y convierte cada clave en un registro.
Redis aparece en el grupo Big data del selector de drivers y está disponible en el plan de licencia open source.
Parámetros de Conexión
| Campo UI | Implementación Técnica | Descripción | Requerido | Valor por Defecto |
|---|---|---|---|---|
| Host | socket.host en el cliente redis | Nombre de host o dirección IP del servidor Redis | Sí | localhost |
| Puerto | socket.port en el cliente redis | Puerto en el que escucha el servidor Redis | Sí | 6379 (de driverPorts) |
| Base de datos | database en el cliente redis (se envía como db) | Índice numérico de la base de datos Redis. Déjalo vacío para la base de datos 0 | No | 0 |
| Usuario | username en el cliente redis | Usuario ACL (Redis 6 o posterior) | No | Ninguno |
| Contraseña | password en el cliente redis | Contraseña del usuario, o la contraseña de requirepass | No | Ninguno |
La conexión se comprueba con el comando PING.
Detalles Técnicos
El controlador Redis utiliza la biblioteca de Node.js redis (node-redis v5).
Claves y entidades
El controlador recorre todas las claves con SCAN y las agrupa en entidades:
- El nombre de la entidad es la parte de la clave anterior al primer
:. Las clavescustomer:1ycustomer:2pertenecen a la entidadcustomer - Una clave sin
:es una entidad por sí misma (por ejemploleaderboard) - Si un prefijo tiene claves de más de un tipo Redis, hay una entidad por tipo, con el nombre
<prefijo>@<tipo>. Los hashesuser:1yuser:2y el stringuser:countson las entidadesuser@hashyuser@string - El número de claves se muestra como número de filas de la entidad, y la descripción es
Redis <tipo> (<n> keys)
Claves Redis Entidades
--------------------------- -----------------------------------
customer:1 (hash) ─┐
customer:2 (hash) ─┴─> customer Redis hash (2 keys)
session:ab12 (string)───> session Redis string (1 keys)
leaderboard (zset) ───> leaderboard Redis zset (1 keys)
user:1 (hash) ───> user@hash Redis hash (1 keys)
user:count (string)───> user@string Redis string (1 keys)Campos
| Campo | Tipo | Descripción |
|---|---|---|
_key | string | Clave Redis completa. Es la clave primaria de la entidad |
| campos del hash | string | En los hashes, un campo por cada campo de hash encontrado en las claves |
_value | string u object | En strings, listas, sets, sets ordenados y streams, el valor de la clave |
_ttl | number | Segundos que faltan para que la clave caduque. Vacío si la clave no caduca |
Proceso de lectura
- Lee la clave con el nombre de la entidad, si existe, y todas las claves que cumplen
<entidad>:*. Si el nombre de la entidad contiene:o*, se usa como patrón. Una entidad<prefijo>@<tipo>lee solo las claves de su prefijo que son de ese tipo - Cada registro tiene
_key,_type(el tipo Redis) y_ttl - El valor depende del tipo:
| Tipo Redis | Registro |
|---|---|
| string | _value con el texto |
| hash | Un campo por cada campo del hash |
| list | _value con un array JSON de los elementos |
| set | _value con un array JSON de los miembros |
| zset | _value con un array JSON de { value, score } |
| stream | _value con un array JSON de { id, message }, uno por entrada, donde message tiene los campos de la entrada |
Las condiciones where se evalúan sobre cada registro en Gigantics, no en Redis (ver Filtros aplicados por Gigantics). La operación Leer consulta (Read Query) debe contener un objeto where en JSON, por ejemplo {"status": "active"}. Se admiten límite y offset.
Proceso de escritura
Para cada registro:
- La clave es
_key. Si el registro no tiene_key(por ejemplo una fila de un tap SQL), la clave es<entidad>:<clave primaria>, con los valores de las columnas de la clave primaria unidos por:. Si la entidad no tiene clave primaria, la clave es<entidad>:<n>, dondenes el número de registro - El tipo es
_type. Si el registro no tiene_type, es el tipo de la entidad Redis de la que viene. Un registro de otra fuente se escribe como string si tiene un campo_value, y como hash con todos sus campos si no lo tiene - string:
SETcon_value. El resto de campos no se escribe - hash: la clave se borra y se vuelve a crear con
HSETcon todos los campos salvo_key,_ttly_type, en un únicoMULTI, para que no queden campos de un valor anterior - list, set y zset: la clave se borra y se vuelve a crear (
RPUSH,SADD,ZADD) con el array JSON de_value - stream: la clave se borra y se vuelve a crear con un
XADDpor cada entrada del array JSON de_value, con los mismos IDs de entrada. Los grupos de consumidores no se copian
Redis guarda textos: las fechas se escriben en formato ISO 8601, los objetos y arrays como JSON, y los valores vacíos como texto vacío.
Una fila de un tap SQL se escribe como hash y no como un texto JSON para que cada columna siga siendo un campo: la entidad Redis tiene los mismos campos que la tabla, y cada uno se puede enmascarar o volver a leer por separado.
Si _ttl es un número igual o mayor que 0, la clave caduca tras ese número de segundos, como en el tap (SET con EX en los strings, EXPIRE en el resto de tipos). Las fracciones de segundo se redondean hacia arriba, y un _ttl de 0 (una clave a la que le quedaba menos de un segundo en el tap) caduca tras 1 segundo. Las claves con _ttl vacío o negativo no caducan.
Modos de escritura:
| Modo de escritura | Comportamiento |
|---|---|
| Drop | Borra las claves de la entidad antes de escribir: la clave <entidad> y las claves que cumplen <entidad>:*, que se buscan con SCAN y se borran con UNLINK en lotes de 1000. En una entidad <prefijo>@<tipo>, solo las claves de ese tipo. El resto de claves de la base de datos no se tocan |
| Truncate | Igual que Drop |
| Append, Update, Merge | Escribe las claves y sobrescribe las que ya existen |
Opciones de Autenticación
| Tipo de Autenticación | Mapeo UI | Descripción |
|---|---|---|
| Ninguno | Sin credenciales | Para servidores Redis sin contraseña |
| Usuario / Contraseña | Campos Usuario y Contraseña | Envía el usuario y la contraseña. Deja Usuario vacío para usar solo la contraseña de requirepass |
| Gestor de Contraseñas | Campos del gestor de contraseñas | Obtiene el usuario y la contraseña de un gestor de contraseñas externo |
Soporte de Túnel SSH
El controlador Redis se conecta mediante host y puerto, así que admite túneles SSH. Para más información sobre cómo configurarlos, consulta la documentación de Túneles SSH.
Endpoints de API Utilizados
Las conexiones Redis se utilizan en:
- Creación de taps (descubrimiento de la fuente de datos)
- Creación de sinks (destino de los datos anonimizados)
- Ejecución de pipelines (extracción y carga de datos)
Dependencia del Controlador Node.js
- Biblioteca: redis
- Propósito: cliente Redis para Node.js
Parámetros Personalizados
Los Parámetros personalizados (YAML) se combinan con la configuración del controlador:
url: redis://user:password@redis.example.com:6379/2 # URL de conexión, sustituye Host y Puerto
batchSize: 1000 # Tamaño de lote si el job o la regla no indican ninguno (1000)Si se indica url, Host y Puerto se ignoran. Usa el esquema rediss:// para conexiones TLS.
Ejemplos de Configuración
Conexión TLS
url: rediss://redis.example.com:6380