您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關springboot集成redis支持設置redis密碼的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
最近使用的spring boot項目中需要集成redis集群,連接redis時需要設置密碼,但是設置密碼之后發現boot集成的redis不支持設置密碼(redis單節點也是一樣),一旦設置密碼后就會報錯:Jedis does not support password protected Redis Cluster configurations
我使用的boot版本是1.4.x
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.7.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent>
我看了一下源碼,源碼如圖:
源碼中一旦發現你設置了密碼的話,直接拋出異常,醉了。。。。。。
然后我看了默認集成的Redis相關版本,其中jedis版本是2.8.x,spring-data-redis的版本是1.7.x,對應的版本中JedisCluster的構造函數,沒有一個包含密碼參數。
解決方案一:替換jedis和spring-data-redis的版本
修改前maven依賴如下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
修改后maven依賴如下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </exclusion> <exclusion> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.0.RELEASE</version> </dependency>
解決方案二:升級boot版本到1.5或者以上
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent>
boot 1.5.x版本中jedis版本默認是2.9.x,spring-data-redis的版本默認是1.8.x,所以可以正常使用redis密碼進行驗證。
application.properties 文件中 redis配置示例
#spring.redis.host = 140.143.23.94 spring.redis.password = 123456 #spring.redis.port = 6379 # 連接超時時間 單位 ms(毫秒) spring.redis.timeout = 6000 spring.redis.cluster.nodes = 12.2.3.14:7001,12.2.3.14:7002,12.2.3.14:7003,12.2.3.14:7004 # 連接池中的最大空閑連接,默認值也是8 spring.redis.pool.max-idle = 8 # 連接池中的最小空閑連接,默認值也是0 spring.redis.pool.min-idle = 0 # 如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)。 spring.redis.pool.max-active = 8 # 等待可用連接的最大時間,單位毫秒,默認值為-1,表示永不超時。如果超過等待時間,則直接拋出 spring.redis.pool.max-wait = -1
關于“springboot集成redis支持設置redis密碼的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。