You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis开启auth_enabled后,GCP CloudRun中Spring Boot应用如何连接?

解决GCP Memorystore Redis认证后Spring Boot(CloudRun)连接问题

核心原因

GCP Memorystore Redis启用认证后,生成的auth_string并非Redis传统密码,而是用于SASL PLAIN认证机制的凭证,直接配置spring.data.redis.password无法触发正确的认证流程,导致连接失败。

解决方案

1. 配置SASL认证参数

在Spring Boot配置文件(application.properties或application.yml)中添加以下配置,替换占位符为你的Redis实例信息:

application.properties

spring.data.redis.host=你的Redis实例IP
spring.data.redis.port=6379
spring.data.redis.sasl.enabled=true
spring.data.redis.sasl.username=default
spring.data.redis.sasl.password=<你的auth_string>
spring.data.redis.ssl=false

application.yml

spring:
  data:
    redis:
      host: 你的Redis实例IP
      port: 6379
      sasl:
        enabled: true
        username: default
        password: <你的auth_string>
      ssl: false

2. 自定义Lettuce连接工厂(若自动配置不生效)

如果上述配置仍无法生效,可手动创建LettuceConnectionFactory Bean,显式配置SASL认证:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import io.lettuce.core.SslOptions;
import io.lettuce.core.auth.SaslAuthentication;

@Configuration
public class RedisConfig {

    @Bean
    public LettuceConnectionFactory lettuceConnectionFactory() {
        RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
        redisConfig.setHostName("你的Redis实例IP");
        redisConfig.setPort(6379);

        LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
                .sslOptions(SslOptions.builder().disable().build())
                .saslAuthentication(SaslAuthentication.plain("default", "<你的auth_string>"))
                .build();

        return new LettuceConnectionFactory(redisConfig, clientConfig);
    }
}

3. 验证CloudRun网络配置

虽然无认证时可正常连接,仍需确认:

  • Redis实例的VPC网络与CloudRun服务的VPC连接器已关联(若使用私有IP连接)
  • CloudRun服务的服务账号拥有roles/redis.client权限

关键说明

  • GCP Memorystore Redis的SASL认证默认使用default作为用户名,密码即为控制台生成的auth_string
  • 确保Lettuce版本≥6.x(你当前使用的6.2.3.RELEASE符合要求),旧版本对SASL支持可能不完善

内容的提问来源于stack exchange,提问作者Zi Sang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:33:23