0
私はLettuceの同期コマンドを使用してHSCANを実行しようとしています。問題は、MapScanCursorを初期化する正しい方法を理解できないことです。私はコンストラクタで成功しなかったし、MapScanCursor.INITIAL
はScanCursor
(MapScanCursor
のいずれかに運がないキャスト)型を返す。ここでレタスレディスクライアントライブラリでMapScanCursorをどのように初期化しますか?
は一例です:
RedisClient redisClient = RedisClient.create("redis://" + url + ":" + port);
RedisHashCommands<String, String> redisCommands = redisClient.connect().sync();
List<String> fields = new LinkedList<>();
MapScanCursor<String, String> scanCursor = ?
do {
scanCursor = redisCommands.hscan(key, scanCursor);
fields.addAll(scanCursor.getMap().keySet());
} while (!scanCursor.isFinished());
は、どのように私は "scanCursor" を初期化する必要がありますか?
は、あなたの質問に答えるだけでhscan(key)
でscanCursor
を初期化するには:
優れた代替案をお寄せいただきありがとうございます。これは私の問題を解決しました。ただし、最初のオプションを使用する場合は、もう一度 'hscan'を呼び出す前に'!scanCursor.isFinished() 'のチェックを行う必要があります。それ以外の場合は、最初の呼び出しでスキャンが終了するとエラーが発生します。例えば。 'scanCursor = redisCommands.hscan(key); while(!scanCursor.isFinished()){scanCursor = redisCommands.hscan(key、scanCursor); fields.addAll(scanCursor.getMap()。keySet()); } ' – tcfritchman