sql >> Databasteknik >  >> NoSQL >> Redis

Hur man namnutrymmestangenter på redis för att undvika namnkollisioner?

Lösning 1:Lagra data från olika moduler i olika Redis-instanser

Den mest strikta isoleringen är att lagra data för varje modul i en individuell Redis-instans, det vill säga en individuell Redis-process.

Lösning 2:Lagra data från olika moduler i olika databaser för en enda Redis-instans

En Redis-instans kan ha flera databaser, och du kan konfigurera antalet databaser i konfigurationsfilen. Som standard finns det 16 databaser.

Dessa databaser är namngivna med ett nollbaserat numeriskt index. Med kommandot select kan du använda ith databas. Efter valet kommer alla efterföljande kommandon att fungera på ith databas.

Så om du tilldelar en oberoende databas för varje modul kan du undvika namnkollisioner.

OBS :den här lösningen FUNGERAR INTE med Redis Cluster . Redis Cluster låter dig bara använda 0:e databas.

Lösning 3:Skapa namnutrymme med nyckelprefix

Om alla dina data måste lagras i en enda databas kan du fortfarande implicit skapa ett namnutrymme med nyckelprefix . För varje modul bör all data i denna modul ha samma nyckelmönster:ModuleName:KeyName , dvs varje nyckel i denna modul har samma prefix:ModuleName .

Eftersom varje modul har olika namn kommer det inte att förekomma några namnkollisioner mellan dessa moduler:

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

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

OBS :den här lösningen fungerar även med Redis Cluster .




  1. Hur kan jag platta till värdeobjektet i MongoDB mapreduce?

  2. hur kan jag se vilka portar mongo lyssnar på från mongo shell?

  3. Redis-gränsen för anslutning/buffertstorlek har överskridits

  4. Importera CSV-data som en array i MongoDB med mongoimport