ScanParams params = new ScanParams();
params.match("userid:fname*");
// Use "0" to do a full iteration of the collection.
ScanResult<String> scanResult = jedis.scan("0", params);
List<String> keys = scanResult.getResult();
Повторите выше код для фамилии и возраста. Или, сопоставьте user:id
, а затем отфильтруйте группы с помощью регулярного выражения и итерации через keys
.
EDIT: для больших коллекций (миллионы ключей), a scan result will return a few tens of elements. Настройте свой код соответственно продолжить сканирование, пока вся коллекция ключей не было проверено:
ScanParams params = new ScanParams();
params.match("userid:fname*");
// An iteration starts at "0": http://redis.io/commands/scan
ScanResult<String> scanResult = jedis.scan("0", params);
List<String> keys = scanResult.getResult();
String nextCursor = scanResult.getStringCursor();
int counter = 0;
while (true) {
for (String key : keys) {
addKeyToProperGroup(key);
}
// An iteration also ends at "0"
if (nextCursor.equals("0")) {
break;
}
scanResult = jedis.scan(nextCursor, params);
nextCursor = scanResult.getStringCursor();
keys = scanResult.getResult();
}
команды SCAN, вероятно, что вам нужно –
Можете ли вы джайв мне пример о том, как это сделать? Я использую Jedis на Java. –
Несомненно, вы можете найти документацию и документацию для команды redis для jedis? –