new ConvertingCursor<>(connection.scan(options),这里报错了
时间: 2024-03-21 17:42:03 浏览: 25
如果你遇到了 `new ConvertingCursor<>(connection.scan(options), ...)` 这行代码报错,那么可能是因为 `ConvertingCursor` 类的构造函数需要两个参数,而你只提供了一个参数。应该使用如下的代码来创建 `ConvertingCursor` 对象:
```java
public List<String> getAllKeys(String pattern) {
List<String> keys = new ArrayList<>();
String cursor = "0";
do {
ScanOptions options = ScanOptions.scanOptions().match(pattern).count(1000).build();
Cursor<byte[]> cursorResult = stringRedisTemplate.executeWithStickyConnection(
(RedisCallback<Cursor<byte[]>>) connection -> connection.scan(options)
);
Cursor<String> convertingCursor = new ConvertingCursor<>(
cursorResult, stringRedisTemplate.getHashValueSerializer()::deserialize
);
while (convertingCursor.hasNext()) {
keys.add(convertingCursor.next());
}
cursor = cursorResult.getCursorId().toString();
} while (!cursor.equals("0"));
return keys;
}
```
在这个代码中,我们首先使用 `executeWithStickyConnection` 方法来创建一个 `Cursor<byte[]>` 对象,该对象包含了符合条件的键的字节数组。然后,我们使用 `ConvertingCursor` 类来创建一个新的 `Cursor<String>` 对象,该对象将字节数组转换为字符串类型的键名。最后,我们使用 `while` 循环遍历游标并将结果添加到列表中,直到游标为零。