Redis es conceptualmente diferente de las bases de datos SQL tradicionales que utilizo, y estoy tratando de averiguar si es adecuado para mi proyecto ... He estado buscando pero no puedo encontrar una respuesta a mi pregunta.Redis y valores de consulta
Tengo un conjunto de usuarios que debo almacenar, cada uno con una ID única y varios valores (como su nombre) asociados. Parece como si simplemente puedo almacenar los como un hash:
user:fef982dcfe1a7bcba4849b4c281bba95
"username" "andrewm" "name" "Andrew"
También tengo un montón de mensajes que desea almacenar, cada uno con una serie de propiedades como el remitente y el destinatario:
message:1a7bcba4849b4c281bfef98a952dcfeb
"sender" "fef982dcfe1a7bcba4849b4c281bba95" "recipient" "82dcfe1a7bcba4849b4c281bba95fef9" "message" "Hi!"
Mi pregunta es, ¿cómo voy a recuperar todos los mensajes enviados por un usuario específico (designado por su hash). ¿Debo utilizar una base de datos relacional tradicional en su lugar, o incluso una base de datos NoSQL como MongoDB (que he usado antes)? Si es así, ¿alguien tiene alguna sugerencia para las tiendas de alto rendimiento? No haré ninguna búsqueda verdadera (es decir, consultas de MySQL LIKE
), solo búsquedas de valores clave, realmente.
Muchas gracias por esa explicación, fue muy útil. Lo echaré un vistazo :) –
Hola, gracias, muy útil. Si "Agregar/eliminar un mensaje significaría mantener los conjuntos *: enviado y *: recibido", ¿necesitaría más espacio para almacenar los datos y, por lo tanto, ocuparía más espacio en la memoria? ¿Podría ser un problema para el rendimiento si este tipo de "multi-tienda" se realiza a menudo? Gracias por su ayuda – Loic
Sí, representa más datos para almacenar. En lo que respecta al rendimiento, se supone que debe utilizar la canalización para amortizar el impacto de hacer varios comandos para una operación determinada. Ver http://redis.io/topics/pipelining –