我使用springboot和redis构建REST api。使用提供的@Autowired StringRedisTemplate,我可以轻松连接到我的本地redis。但是在生产中我们使用redis池,所以在application.properties文件中我指定了redis池:
spring.redis.sentinel.master=mymaster,mymaster_02
spring.redis.sentinel.nodes=mel-01:26379,mel-02:26379,mel-03:26379
java代码:
@Autowired
private RedisTemplate<String, String> redis;
然后当我运行mvn spring-boot:run时,它失败了:
Caused by: java.lang.NullPointerException
at redis.clients.jedis.JedisSentinelPool.toHostAndPort(JedisSentinelPool.java:159)
at redis.clients.jedis.JedisSentinelPool.initSentinels(JedisSentinelPool.java:122)
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:73)
at redis.clients.jedis.JedisSentinelPool.<init>(JedisSentinelPool.java:49)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createRedisSentinelPool(JedisConnectionFactory.java:193)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createPool(JedisConnectionFactory.java:180)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:173)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
更新: 挖掘更多代码并发现springboot无法处理多个主人:
spring.redis.sentinel.master=mymaster,mymaster_02
我们的redis群集是分片的,总共4个节点,数据在节点1,2和节点3之间分割.4。节点2是节点1的从属节点,节点4是节点3的从属节点。在我们的例子中,spring boot工作与redis一点都没?谢谢!