Redis 上的 Spring session - Redis 宕机时的故障转移是什么

标签 spring caching spring-security redis amazon-elasticache

我正在使用 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/

相关文章:

java - Spring 不会在运行时发现新上下文的 @RequestMapping 注释

java - Spring Cloud AWS - 发布 SNS 通知的 header 无效

java - 带有重复bean和@Order注释的Spring依赖注入(inject)

android - 在android中设置WebView缓存的过期时间

Java 全局标识符

ruby-on-rails - Rails 俄罗斯娃娃缓存和 N+1

java - EhCache:选择逐出策略

java - Grails,Spring Security LDAP 插件

Spring WebContentInterceptor 未将 cacheSeconds 添加到 header

angularjs - Spring Security和Angular JavaScript重定向到登录页面