sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo asignar claves de espacio de nombres en redis para evitar colisiones de nombres?

Solución 1:almacenar datos de diferentes módulos en diferentes instancias de Redis

El aislamiento más estricto es el almacenamiento de datos de cada módulo en una instancia de Redis individual, es decir, un proceso de Redis individual.

Solución 2:almacenar datos de diferentes módulos en diferentes bases de datos de una sola instancia de Redis

Una instancia de Redis puede tener varias bases de datos y puede configurar la cantidad de bases de datos en el archivo de configuración. De forma predeterminada, hay 16 bases de datos.

Estas bases de datos se nombran con un índice numérico basado en cero. Con el comando de selección, puede usar el ith base de datos. Después de la selección, cualquier comando subsiguiente operará en el ith base de datos.

Entonces, si asigna una base de datos independiente para cada módulo, puede evitar colisiones de nombres.

NOTA :esta solución NO funciona con Redis Cluster . Redis Cluster solo te permite usar el 0th base de datos.

Solución 3:crear un espacio de nombres con un prefijo de clave

Si todos sus datos deben almacenarse en una sola base de datos, aún puede crear implícitamente un espacio de nombres con prefijo de clave . Para cada módulo, todos los datos de este módulo deben tener el mismo patrón clave:ModuleName:KeyName , es decir, cada tecla de este módulo tiene el mismo prefijo:ModuleName .

Dado que cada módulo tiene un nombre diferente, no habrá colisiones de nombres entre estos módulos:

// Set keys for module1
SET module1:key1 value
SET module1:key2 value

// Set keys for module2
SET module2:key1 value
SET module2:key2 value

NOTA :esta solución también funciona con Redis Cluster .