diff --git a/lib/base/redis/redis.dart b/lib/base/redis/redis.dart index 543ce48..a247d1d 100644 --- a/lib/base/redis/redis.dart +++ b/lib/base/redis/redis.dart @@ -124,6 +124,29 @@ class Redis { return false; } } + + Future> scanKeys(String key, {int timeout = 30}) async { + List keys = []; + int cursor = 0; + try { + do { + final result = await _command + ?.send_object(['SCAN', cursor.toString(), 'MATCH', key]); + final List scanResult = result as List; + cursor = int.parse(scanResult[0] as String); + final List foundKeys = scanResult[1] as List; + + keys.addAll(foundKeys.map((k) => k.toString())); + } while (cursor != 0); + + // return await scanKeys(cmd, pattern) + // .timeout(Duration(seconds: timeoutSeconds)); + } catch (e) { + print('Scan failed: $e'); + return []; + } + return keys; + } } class RedisConfig {