前言

問題點:
原本懷疑可能是redis版本問題,因為現行環境用的是redis3,官方已更新到redis6,
後來發現是properties的寫法有差。
因為公司大部分都還是用spring boot 2,直接照著用的話,會導致springboot一直讀不到redis密碼,
出現NOAUTH Authentication required.的錯誤。

NOAUTH Authentication required.
這段錯誤原因是因為
redis本身配置有設定密碼
那怎麼看redis是否有設定密碼可以滑到文末看看,這邊先記錄解決方法。


解法

兩個springboot版本的差別在於 springboot 3 多了 data

配置redis的寫法

springboot 2

spring.redis.password
範例:

1
2
3
4
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=your_password
spring.redis.database=0

springboot 3

spring.data.redis.password

1
2
3
4
spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379
spring.data.redis.password=your_password
spring.data.redis.database=0

要怎麼看redis是否有設置密碼?

方法1: redis.windows.conf (密碼未知)

打開配置檔 redis.windows.conf
會看到有一個

requirepass

1
requirepass your_password

如果這段沒有註解代表有使用密碼

如果是有配置但是密碼沒生效,有可能是啟動redis的方式不對
要使用

1
redis-server redis.windows.conf

才會吃到redis配置檔的設定

方法2: redis-cli.exe (已知密碼)

點擊這個 redis-cli.exe
直接輸入 ping
會出現 NOAUTH Authentication required.
代表需要密碼

接著輸入

1
auth your_password

出現OK 就代表密碼是對的,通過驗證
再打一次ping就可以正常出現pong

以上就是判斷redis是否有設置密碼的兩種方式


補充

那在爬文解問題的過程中發現springboot2 springboot3有另一個很大的差別是
springboot 2 預設是jedis
springboot 3 預設是lettuce

但是詳細的差別可能之後再研究
過去的開發經驗都是走lettuce