0
我正在嘗試使用Lettuce的同步命令來執行HSCAN。問題是我無法弄清楚初始化MapScanCursor的正確方法。我對構造函數沒有成功,並且MapScanCursor.INITIAL
給出了類型ScanCursor
(沒有運氣把它變成MapScanCursor
)。如何初始化Lettuce Redis客戶端庫中的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'之前檢查'!scanCursor.isFinished()'。否則,如果在第一次通話中掃描結束,您將收到錯誤。例如。 'scanCursor = redisCommands.hscan(key); while(!scanCursor.isFinished()){scanCursor = redisCommands.hscan(key,scanCursor); fields.addAll(scanCursor.getMap()的keySet()); }' – tcfritchman