Pregunta

He estado experimentando con Redis, y me gusta mucho la escalabilidad que trae a la mesa. Sin embargo, me pregunto cómo manejar los cambios en las estructuras de datos para un sistema que ya está en producción.

Por ejemplo, permítanme decir que estoy recogiendo información sobre un usuario, y utilizo el user_id como clave, y el vertido de los otros datos sobre el usuario como valores separados por comas.

user_id: name, email, etc.

Ahora, digo después de cerca de 100.000 registros, me di cuenta de que tenía que consulta por email - ¿cómo podría ahora tomar una instantánea de los datos existentes y crear un nuevo índice para ello

?
¿Fue útil?

Solución

Desde mi comprensión de Redis, esto requeriría cosa que Redis no está diseñado para hacer. Usted tendría que bucle, aunque todos sus registros (usando las teclas *) y luego cambiar el orden de los datos y hacer un duplicado de la llave. Yo, personalmente, recomendaría el uso de una lista en lugar de una coma cadena separada. En una lista, puede reordenar desde el interior Redis. Una lista Redis tiene el siguiente aspecto:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

Estoy incrementando una aplicación en la que me encontré con el mismo problema. Lo resuelto por tener una lista de toda la información del usuario, y luego tener una clave con el correo electrónico del usuario con un valor de ID del usuario. Así que mi base de datos sería algo como esto:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

Así que pude consultar el ID o el correo electrónico y aún así obtener la información que necesitaba.

Lo siento que yo no era capaz de responder directamente a su pregunta. Sólo espero que esta ayuda.

Otros consejos

El uso de CSV no es una gran idea si usted quiere apoyar cambios. Es necesario utilizar un serializador que los mangos de la falta / nuevos valores si todo está en una llave, o puede utilizar un hash Redis, que le da el nombre subclaves. De cualquier manera usted puede agregar / campos de eliminar con el único requisito de que su código sabe qué hacer si se lee un registro sin el nuevo valor.

Para permitir las operaciones de búsqueda por correo electrónico es necesario agregar un índice - básicamente una clave (o lista) para cada e-mail con el identificador de usuario como el valor. Usted tendrá que llenar este índice por conseguir todas las claves de una vez, a continuación, asegurándose de que actualice cuando cambian mensajes de correo electrónico.

Se podría iterar sobre todas las claves y almacenarlas con un ID diferente, pero eso es probablemente más problemas de lo que vale.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top