hkeys - Ingerir a granel en redis
redis-cli commands (2)
Estoy tratando de cargar una gran cantidad de datos en Redis lo más rápido posible.
Mis datos parecen:
771240491921 SOME;STRING;ABOUT;THIS;LENGTH
345928354912 SOME;STRING;ABOUT;THIS;LENGTH
Hay un número de ~ 12 dígitos a la izquierda y una cadena de longitud variable a la derecha. La clave será el número a la izquierda y los datos serán la cadena a la derecha.
En mi instancia de Redis que acabo de instalar de inmediato y con un archivo de texto simple sin comprimir con estos datos, puedo obtener alrededor de un millón de registros en un minuto. Necesito hacer unos 45 millones, lo que llevaría unos 45 minutos. 45 minutos es demasiado largo.
¿Existen algunos ajustes de rendimiento estándar para que pueda realizar este tipo de optimización? ¿Obtendría un mejor rendimiento al dividir en diferentes instancias?
La forma más rápida de hacer esto es la siguiente: generar protocolo Redis a partir de estos datos. La documentación para generar el protocolo Redis está en el sitio Redis.io, es un protocolo trivial. Una vez que tenga eso, simplemente llámelo appendonly.log y comience a redisearlo en modo de solo adición.
Incluso puede ejecutar un comando FLUSHALL y finalmente enviar los datos a su servidor con netcat, redirigiendo la salida a / dev / null.
Esto será súper rápido, no hay RTT que esperar, es solo una carga masiva de datos.
De manera menos intrincada, solo inserte las cosas 1000 cada vez utilizando la canalización. Es casi tan rápido como generar el protocolo, pero mucho más limpio :)
Me gusta lo que Salvadore propuso, pero aquí tienes una manera más clara: generar feed para cli, por ejemplo
SET xxx yyy
SET xxx yyy
SET xxx yyy
canalizarlo en cli en el servidor cerca de usted. Luego, guarde, cierre y mueva el archivo de datos al servidor de destino.