我正在使用 Spring 和 Spring Security,并希望将 spring-session-data-redis 与 RedisHttpSessionConfiguration 结合使用,以便在 redis 上存储 session ID(这样当 webapp 失败并切换到另一台服务器时,客户端不会丢失他们的 session )。
我的问题是,当 Redis 服务器宕机时会发生什么? spring 是否可以通过将 session 存储在内存中来继续工作,直到 Redis 恢复正常?有没有办法这样配置?
我在 AWS ElastiCache 上使用 Redis,故障转移可能需要几分钟才能在 DNS 上配置替换主节点。
最佳答案
据我所知,您需要提供 CacheErrorHandler
( javadoc ) 的实现。
您可以通过提供一个 Configuration
实例来做到这一点,该实例实现了 CachingConfigurer
,并覆盖了 errorHandler()
方法。
例如:
@Configuration
@Ena1bleCaching
public class MyApp extends SpringBootServletInitializer implements CachingConfigurer {
@Override
public CacheErrorHandler errorHandler() {
return MyAppCacheErrorHandler();
}
}
我不清楚你将如何提供不间断的服务——如果不在你的故障转移缓存中复制当前 session ,这似乎是不可能的。
如果您使用的是 ElasticCache,是否无法让 AWS 为您处理复制设置,这样如果一个节点发生故障,另一个节点可以接管?
关于Redis 上的 Spring session - Redis 宕机时的故障转移是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416533/