Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como chaves de namespace no redis para evitar colisões de nomes?


Solução 1:armazene dados de diferentes módulos em diferentes instâncias do Redis

O isolamento mais rigoroso é armazenar dados de cada módulo em uma instância individual do Redis, ou seja, um processo individual do Redis.

Solução 2:armazene dados de diferentes módulos em diferentes bancos de dados de uma única instância do Redis

Uma instância do Redis pode ter vários bancos de dados e você pode configurar o número de bancos de dados no arquivo de configuração. Por padrão, existem 16 bancos de dados.

Esses bancos de dados são nomeados com um índice numérico baseado em zero. Com o comando select, você pode usar o ith base de dados. Após a seleção, quaisquer comandos subsequentes operarão no ith base de dados.

Portanto, se você atribuir um banco de dados independente para cada módulo, poderá evitar colisões de nomes.

OBSERVAÇÃO :esta solução NÃO funciona com Redis Cluster . Redis Cluster só permite que você use o base de dados.

Solução 3:crie namespace com prefixo de chave

Se todos os seus dados precisarem ser armazenados em um único banco de dados, você ainda poderá criar implicitamente um namespace com prefixo de chave . Para cada módulo, todos os dados deste módulo devem ter o mesmo padrão de chave:ModuleName:KeyName , ou seja, cada chave deste módulo tem o mesmo prefixo:ModuleName .

Como cada módulo tem um nome diferente, não haverá colisões de nomes entre esses 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

OBSERVAÇÃO :esta solução também funciona com Redis Cluster .