Spring Boot集成Redisson时读取clusterServersConfig配置报错
问题分析与解决方案
错误原因
Redisson Spring Boot Starter 默认会将 spring.redis.redisson.config 字段的字符串内容当作 JSON格式 解析,而你配置的是YAML语法结构,Jackson在解析时无法识别YAML的键值对格式,因此抛出Unrecognized token 'clusterServersConfig'错误。
解决方案
有两种可行的修复方式:
方式1:指定配置类型为YAML
在application.yml中添加config-type: yaml,明确告诉Redisson使用YAML格式解析配置内容:
redis: redisson: config-type: yaml # 新增此配置项 config: | clusterServersConfig: idleConnectionTimeout: 10000 connectTimeout: ${REDISSON_CONNECT_TIMEOUT:20000} timeout: ${REDISSON_TIMEOUT:3000} retryAttempts: ${REDISSON_RETRY_ATTEMPTS:3} retryInterval: ${REDISSON_RETRY_INTERVAL:1500} subscriptionConnectionPoolSize: ${REDISSON_SUBSCRIPTION_POOL_SIZE:50} slaveConnectionMinimumIdleSize: ${REDISSON_SLAVE_MIN_IDLE_SIZE:24} slaveConnectionPoolSize: ${REDISSON_SLAVE_POOL_SIZE:48} masterConnectionMinimumIdleSize: ${REDISSON_MASTER_MIN_IDLE_SIZE:24} masterConnectionPoolSize: ${REDISSON_MASTER_POOL_SIZE:48} nodeAddresses: - "rediss://${APPS_REDIS:-}:${APPS_REDIS_PORT:6379}" password: ${APPS_REDIS_SECRET:-} threads: ${REDISSON_THREADS:16} nettyThreads: ${REDISSON_NETTY_THREADS:96}
方式2:将配置内容转换为JSON格式
把原YAML结构转成JSON格式,注意字符串转义:
redis: redisson: config: | { "clusterServersConfig": { "idleConnectionTimeout": 10000, "connectTimeout": ${REDISSON_CONNECT_TIMEOUT:20000}, "timeout": ${REDISSON_TIMEOUT:3000}, "retryAttempts": ${REDISSON_RETRY_ATTEMPTS:3}, "retryInterval": ${REDISSON_RETRY_INTERVAL:1500}, "subscriptionConnectionPoolSize": ${REDISSON_SUBSCRIPTION_POOL_SIZE:50}, "slaveConnectionMinimumIdleSize": ${REDISSON_SLAVE_MIN_IDLE_SIZE:24}, "slaveConnectionPoolSize": ${REDISSON_SLAVE_POOL_SIZE:48}, "masterConnectionMinimumIdleSize": ${REDISSON_MASTER_MIN_IDLE_SIZE:24}, "masterConnectionPoolSize": ${REDISSON_MASTER_POOL_SIZE:48}, "nodeAddresses": ["rediss://${APPS_REDIS:-}:${APPS_REDIS_PORT:6379}"], "password": "${APPS_REDIS_SECRET:-}" }, "threads": ${REDISSON_THREADS:16}, "nettyThreads": ${REDISSON_NETTY_THREADS:96} }
验证说明
两种方式都能解决JSON解析错误问题,推荐使用方式1,因为YAML格式更易读,且和Spring Boot的配置风格保持一致。本地搭建的Redis集群环境无需额外调整,配置修复后即可正常启动项目。
内容的提问来源于stack exchange,提问作者prabhu_axm
相关产品推荐
相关产品推荐

