2017-06-02 4 views
1

Ich möchte mehrere Schlüssel mit Einzelwert mit Jedis (Redis Cache) mit Java speichern.Mehrere Schlüssel auf einzelne Wert in Redis (Cache) mit Java

Ich habe drei Tasten wie user_1, driver_10, admin_5 und Wert = this is user, und ich möchte Wert erhalten, indem eine beliebige Taste unter diesen drei verwenden.

+0

Können Sie erklären, was exacly Ihr Schlüssel ist? Ist es '[user_10, driver_5]' inklusive Klammern? Welchen [redis java client] (https://redis.io/clients#java) verwendest du? Jedis, Jredis? (Ich kenne keine "jdis") –

+0

Ich möchte mehrere Schlüssel hinzufügen, die einzelnen Wert zeigt Angenommen, ich habe drei Schlüssel wie user_1, driver_10, admin_5 und value = "das ist Benutzer" und ich möchte mit Wert zu erhalten irgendeinen Schlüssel unter drei – user3864113

Antwort

4

Wenn mehrere Schlüssel auf denselben Wert zeigen, wird dies in Redis vorerst nicht unterstützt, siehe issue #2668.

Sie benötigen eine Problemumgehung.

Einige Ideen unten, möglicherweise offensichtlich oder dumm :)


Vielleicht ein Zwischenschlüssel:
- user_10id_123
- driver_5id_123
- id_123data_that_you_dont_want_to_duplicate

Sie könnte diese Logik in Ihrem Client-Code oder in benutzerdefinierten Lua-Skripten auf dem Server implementieren, und Lassen Sie Ihren Client-Code diese Skripte verwenden (aber ich weiß nicht genug darüber, um Details anzugeben).

Wenn Sie die Umleitungslogik auf der Client-Seite implementieren, und wenn die Zugriffe unsymmetrisch sind, z. B. 99% der Zeit über die Benutzer-Taste und 1% der Zeit über den Treiber-Schlüssel, kann dies vermieden werden 2 Client-Server-Roundtrips für den 99% Fall. Dazu können Sie Weiterleitungen kodieren. Zum Beispiel, wenn das erste Zeichen # ist, dann ist der Rest die Daten. Wenn das erste Zeichen @ ist, dann ist der Rest der eigentliche Schlüssel.

  • user_10#data_that_you_dont_want_to_duplicate
  • driver_5@user_10
+0

Ich möchte mehrere Schlüssel hinzufügen, die einzelnen Wert zeigen, nehme an, ich habe drei Schlüssel wie user_1, driver_10, admin_5 und value = "das ist Benutzer" und ich möchte Wert mit einem beliebigen Schlüssel unter drei – user3864113

+1

erhalten OK, dann denke ich, dass ich es richtig verstanden habe, und der erste Satz meiner Antwort ist relevant: das wird derzeit nicht unterstützt, also kannst du das verknüpfte GitHub-Thema kommentieren oder über Umgehungslösungen nachdenken. –

+0

ok danke Budy. – user3864113

Verwandte Themen