Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
En el clúster de redis, ¿cómo obtener los datos de todo el clúster que se establece mediante el comando HMSET por el nodo del cliente de redis?

¿Es posible mediante el comando HSCAN, solo proporcionando el host y el puerto de un solo nodo, que detecta automáticamente el nodo del clúster y proporciona todos los datos?

actualmente hizo una solución temporal iterando a través de todo el nodo.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cómo hacerlo exactamente depende del cliente que esté utilizando.

Por lo general, Redis usa el algoritmo XModem CRC 16 para determinar dónde está almacenada la clave, verifique este código fuente: https://github.com/h0x91b/fast-redis-cluster/blob/remake/index.js#L92:L175

Para saber dónde está realmente almacenada la clave, debe calcular xmodem crc16 del nombre de la clave, luego tomar el módulo de 16384. El resultado es el bucket number de depósito, ahora puede usar el comando CLUSTER NODES para determinar qué servidor sirve este depósito.

Por ejemplo, nuestro nombre clave es 123456789

crc16 de 123456789 es 12739

12739 % 16384 = 12739, por lo que nuestro balde es 12739

Luego ejecute el comando CLUSTER NODES , sin importar en qué servidor maestro/esclavo.

Verás algo como esto:

 2339fe27bd311835712965a764839b4acaf41d5c 127.0.0.1:7012@17012 slave b43c92c05670537a60bcbf5430fef5e66ddebbcf 0 1493302253929 4 connected f3007f3c2bc3a2826a3ed8e54a5e651e7457161a 127.0.0.1:7001@17001 myself,master - 0 0 0 connected 0-8191 1a054a84924109d277133bc1c14b0266f21b9f29 127.0.0.1:7003@17003 master - 0 1493302250907 3 connected 16383 577877f65e2c57a60849f242a2e740e822642431 127.0.0.1:7011@17011 slave f3007f3c2bc3a2826a3ed8e54a5e651e7457161a 0 1493302254932 1 connected b43c92c05670537a60bcbf5430fef5e66ddebbcf 127.0.0.1:7002@17002 master - 0 1493302249900 1 connected 8192-16382 47bf2c2f5e2e6acf10dff8568f8212a014335a5c 127.0.0.1:7013@17013 slave 1a054a84924109d277133bc1c14b0266f21b9f29 0 1493302252924 3 connected

Cada línea es un servidor. 2339fe27bd311835712965a764839b4acaf41d5c es la identificación del servidor, luego la dirección IP y el puerto, las banderas y la configuración.

Necesitamos encontrar la línea que contiene flag master y al final de esta línea verá qué depósitos aloja este servidor.

En mi caso, la línea necesaria es:

b43c92c05670537a60bcbf5430fef5e66ddebbcf 127.0.0.1:7002@17002 master - 0 1493302249900 1 connected 8192-16382

8192-16382 <<< este servidor sirve cubos 8192,8193,8194...16382 (inclusive) por lo que nuestra clave se encuentra en el servidor 127.0.0.1:7002

Solo hay dos sintaxis para depósitos.

  1. 1-125 - de 1 a 125
  2. 1,3,5 - cubo 1 y 3 y 5
  3. 1-10,15,18,20-100 - solo mezcla de los dos anteriores

Una cosa más, redis admite Hashtags en modo clúster, si la clave se parece a hello{world} crc16, solo lo hacemos en 'hello' sin '{world}' crc16('hello') esto puede ayudarlo a almacenar las claves en el mismo instancia..

over 4 years ago · Santiago Trujillo Denunciar

0

La combinación de node-redis y node-redis-streamify me da el resultado que esperaba...

 var redis = require("redis"); require('node-redis-streamify')(redis); // Host and port of single node var client = redis.createClient({host:xyz, port:xyz}); var pattern = '*', count = 1000, hscan = client.streamified('HSCAN'); hscan(key, pattern, count) .on('data', function (data) { console.log('hscan data ***', data); }) .on('error', function (error) { console.log('hscan error ***', error); }) .on('end', function () { console.log('hscan end ***'); });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda