6.5. 离线会话预加载
除了 Infinispan 缓存外,离线会话存储在数据库中,这意味着即使在服务器重启后也会可用。默认情况下,在服务器启动过程中,离线会话不会从数据库加载到 Infinispan 缓存中,因为如果很多离线会话被预加载,则这种方法存在缺陷。它可能会在服务器启动时间显著降低。因此,离线会话默认从数据库获取。
但是,Red Hat Single Sign-On 可以配置为在服务器启动期间将离线会话从数据库加载到 Infinispan 缓存。它可通过将 userSessions
SPI 中的 preloadOfflineSessionsFromDatabase
属性设置为 true
来实现。
以下示例演示了如何配置离线会话预加载。
<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2"> ... <spi name="userSessions"> <default-provider>infinispan</default-provider> <provider name="infinispan" enabled="true"> <properties> <property name="preloadOfflineSessionsFromDatabase" value="true"/> </properties> </provider> </spi> ... </subsystem>
使用 CLI 命令进行等同的配置:
/subsystem=keycloak-server/spi=userSessions:add(default-provider=infinispan) /subsystem=keycloak-server/spi=userSessions/provider=infinispan:add(properties={preloadOfflineSessionsFromDatabase => "true"},enabled=true)