我正在使用Spring和Spring Security,并希望使用Spring-session-data-redis和RedisHttpSessionConfiguration来在redis上存储会话ID(因此当webapp失败并切换到另一台服务器时,客户端不会丢失会话).
我的问题,当Redis服务器关闭时会发生什么?
在Redis重新启动之前,Spring是否可以通过在内存中存储会话来继续工作?有没有办法这样配置?
我在AWS ElastiCache上使用Redis,故障转移可能需要几分钟才能在DNS上配置替换主节点.
最佳答案
据我所知,您需要提供CacheErrorHandler(javadoc)的实现.
您可以通过提供实现CachingConfigurer的Configuration实例来执行此操作,并覆盖errorHandler()方法.
例如:
@Configuration
@Ena1bleCaching
public class MyApp extends SpringBootServletInitializer implements CachingConfigurer {
@Override
public CacheErrorHandler errorHandler() {
return MyAppCacheErrorHandler();
}
}
你究竟如何提供不间断的服务对我来说并不清楚 – 如果没有复制故障转移缓存中的当前会话,这似乎是不可能的.
如果您正在使用ElasticCache,是否无法让AWS为您处理复制设置,以便在一个节点运行时,另一个节点可以接管?