sql >> Databáze >  >> NoSQL >> Redis

Získejte všechna pole a hodnoty hash klíče pomocí redis v uzlu

Získáváte jednu hodnotu, protože jste přepsali předchozí hodnotu.

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

To přidá Id, ReqNo k objektu hash Table1.

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

To přepíše Id a ReqNo pro objekt hash Table1. V tomto okamžiku máte v hash pouze dvě pole.

Ve skutečnosti váš problém pochází ze skutečnosti, že se pokoušíte mapovat model relační databáze na Redis. Neměl bys. S Redis je lepší uvažovat z hlediska datových struktur a přístupových cest.

Musíte uložit jeden hash objekt na záznam. Například:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

Poté můžete použít sadu k uložení ID:

SADD Table1 9324324 9324325

Nakonec načtěte data ReqNo přidružená ke kolekci Table1:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

Pokud chcete také vyhledat všechna ID, která jsou přidružena k danému ReqNo, pak potřebujete jinou strukturu pro podporu této přístupové cesty:

SADD ReqNo:23432 9324324 9324325

Seznam ID pro záznam 23432 tedy můžete získat pomocí:

SMEMBERS ReqNo:23432

Jinými slovy, nepokoušejte se transponovat relační model:vytvořte si vlastní datové struktury podporující vaše případy použití.




  1. Jednoduché použití EM::Synchrony#sync způsobuje 'kořenové vlákno' FiberError -- moje chyba?

  2. Dotazování na rozsah v Redis - Spring Data Redis

  3. Dotaz na dokumenty, kde je velikost pole větší než 1

  4. Chyba při spouštění skriptu Lua z klienta redis