2016-10-24 2 views
0

Zur Zeit habe ich einige Daten in Redis gespeichert, die wie die folgendenDurchlaufen Redis Keys

sehen 'Schlüssel: A: 1': 'EINIGE-DATEN'
'Schlüssel: A: 2': 'EINIGE-DATEN'
'Schlüssel: A: 3': 'EINIGE-DATEN'
'Schlüssel: A: 4': 'EINIGE-DATEN'
'Schlüssel: A: 5': 'EINIGE-DATEN'
'Schlüssel: A: 6': 'EINIGE-DATEN'

'Schlüssel: B: 7': 'some_data'
'Schlüssel: B: 8': 'some_data'
'key: B: 9': 'EINIGE-DATEN'
'key: B: 10': 'EINIGE-DATEN'
'key: B: 11': 'EINIGE-DATEN'
'key: B: 12': ' EINIGER-DATEN '

'key: ABC: 15': 'EINIGE-DATEN'
'key: ABC: 16': 'EINIGE-DATEN'
'key: ABC: 17': 'EINIGE-DATEN'
' key: ABC: 18' : 'EINIGE-DATEN'
'key: ABC: 19': 'EINIGE-DATEN'
'key: ABC: 20': 'EINIGE-DATEN'

...

... Tonnen von anderen Daten, die

In Python nicht Spiel das obige Format der Fall ist, möchte ich alle Schlüssel in dem obigen Format iterieren (Schlüssel: *: *) und extrahiere die Werte. Also im Grunde möchte ich zuerst alle Schlüssel des Formatschlüssels durchlaufen: A: *, dann alle Schlüssel des Formatschlüssels: B: * usw. Gibt es eine Möglichkeit, dies zu tun, ohne das KEYS Muster zu verwenden? Oder sollte ich überdenken, wie ich Daten speichere?

Antwort

2

Sie können den Befehl SCAN mit einem Übereinstimmungsmuster verwenden, um dies zu erreichen. Es iteriert den Schlüsselraum in einer inkrementellen Iterationsweise und blockiert Redis nicht für eine lange Zeit.

Dieser Befehl hat jedoch auch einige Nachteile. Zum Beispiel könnte ein gegebener Schlüssel mehrmals zurückgegeben werden, Sie sollten es in Ihrem Client-Code beachten. Weitere Informationen finden Sie unter the documentation.