redisデータベース全体のインスタンスを巡回して読み込む

1239 ワード

redis 2.8.0のバージョンから、redisのすべてのキーをスキャンするためのSCANシステムコマンドが提供されています.
RedisのSCAN操作はその全体のデータ設計のため、特別な正確なscan操作を提供することができなくて、ただ1つの“can‘t guarantee,just domy best”の実現で、優劣は以下の通りです:
  • の利点:
  • はキー空間の遍歴操作を提供し、カーソル、複雑度O(1)をサポートし、全体的に遍歴するにはO(N)しか必要ない.
  • は、結果パターンマッチングを提供する.
  • は、一度に返されるデータバー数の設定をサポートしていますが、hintsだけで、返されることが多い場合があります.
  • 弱い状態で、すべての状態はクライアントがカーソルを維持する必要があるだけです.

  • 欠点:
  • は完全なスナップショット遍歴を提供できません.つまり、データの変更があれば、変更に関連するデータ遍歴ができない場合があります.
  • が返すたびに返されるデータの数は一定ではなく、内部に極度に依存して実現される.
  • が返すデータは重複する可能性があり、アプリケーション層は再入力ロジックを処理することができる必要がある.


  • redisは柔軟なデータクエリー方式を提供し、最も牛のはkeyの検索が正規表現をサポートすることである.
    jedis.keys(“*”);すべてのkey jedisを検索します.keys(「abc*」)は、abcの先頭にあるkeyデータの検索を表す
    keyを遍歴するとvalueまで遍歴できます.
    JAvaコード
    ......
    
    Set<String> s = jedis.keys("u_id_*");
    Iterator<String> it = s.iterator();
    while (it.hasNext()) {
    	String key = it.next();
    	String value = rd.jedis.get(key);
    	System.out.println(key +"---"+ value);
    }
    
    ......

    参照先:
    http://redis.io/commands/scan
    http://www.w2bc.com/Article/3159
    http://chenzhenianqing.cn/articles/1090.html
    http://chenzhenianqing.cn/articles/1101.html