7.14. 基于流的接口
红帽构建的 Keycloak 中的许多用户存储接口包含可返回大量对象的查询方法,这可能会导致内存消耗和处理时间出现显著影响。当只有对象内部状态的一个子集在查询方法的逻辑中使用时,这尤其如此。
为了给开发人员提供使用这些查询方法中大型数据集的有效替代方案,在用户存储接口中添加了 Streams 子接口。这些 Streams 子接口将 super-interfaces 中的基于原始集合的方法替换为基于流的变体,从而基于集合的方法。基于集合的查询方法的默认实现调用其 Stream 的对应部分,并收集到正确的集合类型。
Streams 子接口允许实现基于流的方法来处理一组数据,并从该方法的潜在内存和性能优化中受益。提供要实施的 Streams 子接口的接口包括几个 功能接口、org.keycloak.storage.fe deated 软件包中的所有接口,以及可能根据自定义存储实施范围而实现的其它接口。
请参阅此列表,为开发人员提供一个 Streams 子接口的接口列表。
| 软件包 | 类 |
|
|
|
|
|
|
|
| 所有接口 |
|
|
|
7000 表示接口是一个 功能接口
要从流方法中受益的自定义用户存储实施应实施 Streams 子接口而不是原始接口。例如,以下代码使用 UserQueryProvider 接口的 Streams 变体: