|
Desarrollar aplicaciones con Redis es un proceso agradable, pero como cualquier tecnología, hay algunas cosas que debes tener en cuenta al diseñar aplicaciones basadas en Redis. Puede que ya estuvieras familiarizado con toda la rutina del desarrollo de bases de datos relacionales, y el desarrollo de aplicaciones basadas en Redis tiene muchas similitudes, pero debes tener en cuenta dos cosas a continuación: Redis es una base de datos en memoria y es de un solo hilo. Por lo tanto, al usar Redis, debes prestar atención a los siguientes puntos: 1. Controla todas las teclas almacenadas en Redis La función principal de una base de datos es almacenar datos, pero es normal que los desarrolladores ignoren algunos datos almacenados en la base de datos debido a cambios en los requisitos de la aplicación o en los métodos de uso de datos, y lo mismo ocurre en Redis. Puede que pases por alto ciertas claves que caducan, o que olvides los datos porque un módulo de tu aplicación está obsoleto. En cualquier caso, Redis almacena algunos datos que ya no se usan, ocupando espacio sin motivo aparente. El patrón de datos débilmente estructurado de Redis dificulta averiguar qué se almacena centralmente a menos que uses una nomenclatura muy madura para las claves. Usar el método de nombres adecuado simplificará la gestión de tu base de datos, y cuando creas un espacio de nombres para claves a través de tu aplicación o servicio (normalmente usando dos puntos para dividir los nombres de clave), puedes identificar fácilmente los datos al migrarlos, convertirlos o eliminarlos. Otro caso de uso común de Redis es como segundo almacén de datos para elementos de datos activos, donde la mayor parte de los datos se almacena en otras bases de datos, como PostgreSQL o MongoDB. En estos casos de uso, los desarrolladores a menudo olvidan eliminar los datos correspondientes en Redis cuando se retiran datos del almacenamiento principal. En este caso, normalmente se requiere eliminación en cascada, en cuyo caso puede lograrse guardando todos los identificadores de un elemento de datos específico en la configuración Redis, para asegurar que, tras eliminar los datos en la base de datos primaria, se llame a un limpiador para eliminar todas las copias e información relevantes. 2. Controlar la longitud de todos los nombres clave Como hemos dicho antes, usamos convenciones de nombres apropiadas y añadimos prefijos para identificar hacia dónde van los datos, así que esto parece ir en contra de eso. Sin embargo, no olvides que Redis es una base de datos en memoria, y cuanto más cortas sean las llaves, menos espacio necesitas. Naturalmente, cuando hay millones o miles de millones de claves en una base de datos, la longitud del nombre de la clave tendrá un gran impacto. Por ejemplo, en un servidor Redis de 32 bits, si almacenas un millón de claves con una longitud de 32 caracteres, consumirá unos 96MB de espacio al usar un nombre clave de 6 caracteres, pero si usas un nombre clave de 12 caracteres, el consumo de espacio aumentará a unos 111MB. Con más llaves, el 15% adicional de gastos generales tendrá un impacto significativo. 3. Utilizar la estructura de datos adecuada Ya sea por el uso de memoria o el rendimiento, a veces las estructuras de datos pueden tener un gran impacto; aquí tienes algunas buenas prácticas a las que referirte: En lugar de almacenar datos como miles (o millones) de cadenas separadas, considera usar estructuras de datos hashadas para agrupar datos relacionados. Las tablas hash son muy eficientes y pueden reducir el consumo de memoria; Al mismo tiempo, el hashing también es más beneficioso para la abstracción de detalles y la legibilidad del código. Cuando sea apropiado, usa lista en lugar de conjunto. Si no necesitas usar la función de set, List puede ofrecer velocidades más rápidas que set usando menos memoria. Los conjuntos ordenados son las estructuras de datos más costosas, tanto en términos de consumo de memoria como de complejidad de operaciones básicas. Si solo necesitas una forma de consultar registros y no te importa ordenar esas propiedades, entonces se recomienda encarecidamente usar tablas hash. Una característica a menudo pasada por alto en Redis son los mapas de bits o conjuntos de bits (después de la versión 2.2). Los conjuntos de bits permiten realizar múltiples operaciones a nivel de bit sobre valores de Ridis, como algunos análisis ligeros. 4. No usar la clave al usar SCAN Desde Redis v2.8, el comando SCAN ya está disponible, que permite recuperar claves del espacio de teclas usando el cursor. En comparación con el comando KEYS, aunque SCAN no puede devolver todos los resultados coincidentes a la vez, evita el alto riesgo de bloquear el sistema, de modo que algunas operaciones pueden ejecutarse en el nodo maestro. Es importante señalar que el comando SCAN es un iterador basado en cursor. Cada vez que se llama al comando SCAN, se devolverá un nuevo cursor al usuario, y este deberá usar este nuevo cursor como parámetro de cursor del comando SCAN en la siguiente iteración, para continuar el proceso de iteración anterior. Al mismo tiempo, con SCAN, los usuarios también pueden ajustar comandos usando el modo de nombre de clave y las opciones de recuento. Los comandos relacionados con SCANNING también incluyen comandos SSCAN, comandos HSCAN y comandos ZSCAN, que se utilizan para colecciones, claves hash y secuelas, respectivamente. 5. Utilizar scripts Lua en el lado del servidor En el proceso de usar Redis, el soporte de scripts Lua sin duda proporciona a los desarrolladores un entorno de desarrollo muy amigable, liberando así enormemente la creatividad de los usuarios. Cuando se usan correctamente, los scripts Lua pueden aportar mejoras significativas en rendimiento y consumo de recursos. En lugar de pasar datos a la CPU, los scripts permiten ejecutar la lógica más cercana a los datos, reduciendo la latencia de red y la transferencia redundante de datos. En Redis, un caso de uso muy clásico de Lua es el filtrado o agregación de datos en una aplicación. Al encapsular el flujo de trabajo de procesamiento en un script, puedes simplemente llamarlo para obtener una respuesta más pequeña usando pocos recursos en menos tiempo. Consejo profesional:Lua es genial, pero también tiene algunos problemas, como la dificultad para informar y gestionar errores. Un enfoque inteligente es usar la función Pub/Sub de Redis y dejar que el script envíe mensajes de registro a través de un canal dedicado. Luego crea un proceso de suscripción y procesarlo en consecuencia.
|