values test keys example commands cluster and all redis

test - Redis set vs hash



redis sentinel (2)

Los hash de Redis son buenos para almacenar datos más complejos, como sugiere en su pregunta. Los uso exactamente para eso: almacenar objetos con múltiples atributos que deben almacenarse en caché (específicamente, datos de inventario para un producto en particular en un sitio de comercio electrónico). Claro, podría usar una cadena concatenada, pero eso agrega complejidad innecesaria a mi código de cliente y no es posible actualizar un campo individual.

Puede que tengas razón: los tutoriales pueden ser simplemente anteriores a la introducción de Hash. Estaban claramente diseñados para almacenar representaciones de objetos: http://oldblog.antirez.com/post/redis-weekly-update-1.html

Supongo que una preocupación sería la cantidad de comandos que Redis debe atender cuando se inserta un nuevo elemento (n cantidad de comandos, donde n es el número de campos en el Hash) cuando se compara con un simple comando SET de cadena. Aún no he encontrado que esto sea un problema en un servicio que llega a Redis aproximadamente 1 millón de veces al día. Usar la estructura de datos correcta para mí es más importante que un impacto de rendimiento insignificante.

(También, por favor vea mi comentario sobre Redis Sets vs. Redis Strings - ¡Creo que su pregunta se refiere a Strings, pero corríjanme si estoy equivocado!)

En muchos tutoriales de Redis (como este ), los datos se almacenan en un conjunto, pero con múltiples valores combinados en una cadena (es decir, una cuenta de usuario puede almacenarse en el conjunto como dos entradas, "usuario: 1000: nombre de usuario" y "usuario: 1000: contraseña").

Sin embargo, Redis también tiene hashes. Parece que tendría más sentido tener un hash "usuario: 1000", que contiene una entrada de "nombre de usuario" y una entrada de "contraseña". En lugar de concatenar cadenas para acceder a un valor particular, solo tiene que acceder a ellas directamente en el hash.

Entonces, ¿por qué no se usa tanto? ¿Son estos solo viejos tutoriales? ¿O los hash de Redis tienen problemas de rendimiento?


Los hash son uno de los métodos más eficientes para almacenar datos en Redis, llegando incluso a recomendarlos para usarlos siempre que sea posible.

http://redis.io/topics/memory-optimization

Usar hashes cuando sea posible

Los pequeños hashes están codificados en un espacio muy pequeño, por lo que debe intentar representar sus datos usando hashes cada vez que sea posible. Por ejemplo, si tiene objetos que representan usuarios en una aplicación web, en lugar de usar diferentes claves para nombre, apellido, correo electrónico, contraseña, use un solo hash con todos los campos requeridos.