关于Redis的春季会议 - Redis关闭时的故障转移是什么

Ber*_*hor 8 spring caching spring-security redis amazon-elasticache

我正在使用Spring和Spring Security,并希望使用Spring-session-data-redis和RedisHttpSessionConfiguration来在redis上存储会话ID(因此当webapp失败并切换到另一台服务器时,客户端不会丢失会话).

我的问题,当Redis服务器关闭时会发生什么?在Redis重新启动之前,Spring是否可以通过在内存中存储会话来继续工作?有没有办法这样配置?

我在AWS ElastiCache上使用Redis,故障转移可能需要几分钟才能在DNS上配置替换主节点.

dem*_*iak 1

据我所知,您将需要提供CacheErrorHandlerjavadoc)的实现。

您可以通过提供一个Configuration实例来实现此目的,该实例实现CachingConfigurer并重写该errorHandler()方法。

例如:

@Configuration
@Ena1bleCaching
public class MyApp extends SpringBootServletInitializer  implements CachingConfigurer {

  @Override
  public CacheErrorHandler errorHandler() {

    return MyAppCacheErrorHandler();
  }

}
Run Code Online (Sandbox Code Playgroud)

我不清楚您将如何提供不间断的服务 - 如果不复制故障转移缓存中的当前会话,这似乎是不可能的。

如果您使用 ElasticCache,是否可以让 AWS 为您处理复制设置,以便在一个节点发生故障时,另一个节点可以接管?

  • 这不适用于“spring-boot@2.6.6”。仅当使用“@Cacheable”注释时才会自动调用自定义缓存错误处理程序。`spring-session-data-redis` 完全忽略它 (2认同)