2016-10-24 53 views
0

現在、私はいくつかのデータは、以下の反復処理

のように見えるのRedisに保存されている 'キー:A:1': 'SOME_DATA'
'キー:A:2': 'SOME_DATA'
'キー:A:3': 'SOME_DATA'
'キー:A:4': 'SOME_DATA'
'キー:A:5': 'SOME_DATA'
'キー:A:6' 'SOME_DATA'

'キー:B:7': 'some_data'
'キー:B:8': 'some_data'
'キー:B:9': 'SOME_DATA'
'キー:B:10': 'SOME_DATA'
'キー:B:11': 'SOME_DATA'
'キー:B:12': ' SOME_DATA '

'キー:ABC:15': 'SOME_DATA'
'キー:ABC:16': 'SOME_DATA'
'キー:ABC:17': 'SOME_DATA'
' キー:ABC: 18' : 'SOME_DATA'
'キー:ABC:19': 'SOME_DATA'
'キー:ABC:20': 'SOME_DATA'

...

...ん、他のデータのトンない試合Pythonで

が、私は(上記の形式ですべてのキーを反復処理したい上記の形式のキー:*: *)、値を抽出します。だから、基本的には、まずフォーマットキーのすべてのキーを反復したいと思っています:A:*、次にフォーマットキーのすべてのキー:B:*などKEYSパターンを使用せずにこれを行う方法はありますか?または、私はデータをどのように格納しているのか考え直すべきでしょうか?

答えて

2

これを実現するには、一致パターンでSCANコマンドを使用できます。これは、増分反復方法でキースペースを反復し、長時間Redisをブロックしません。

ただし、このコマンドにはいくつかの欠点もあります。たとえば、指定されたキーが複数回返される可能性があるので、クライアントコードで注意してください。詳細はthe documentationを参照してください。