项目要做分离,对以前正在运营的项目做分隔处理,原来的redis缓存自然也要分开,避免最大化改动对功能的影响,对于缓存数据库只是做了分隔项目redis的库(dataBase)
在Spring.xml配置中这样申明了redis。
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg ref="jedisPoolConfig" />
<constructor-arg value="${redis.ip}" />
<constructor-arg value="${redis.port}" />
<constructor-arg value="${redis.timeout}" />
<constructor-arg value="${redis.database}" />
</bean>
接下来在开发服测试中,进行缓存处理时报错,如标题所见jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
在csdn中找到部分前辈们解决的经验,链接
当中只提到密码访问,和无配置文件启动,并不能很好的解决我的问题(同一个服务器下多个redis端口不可能无配置文件启动)
由于我是无密码访问,我在参考了旧的项目后发现这样一种解法
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg ref="jedisPoolConfig" />
<constructor-arg value="${redis.ip}" />
<constructor-arg value="${redis.port}" />
<constructor-arg value="${redis.timeout}" />
<constructor-arg ><null/></constructor-arg>
<constructor-arg value="${redis.database}" />
</bean>
只是多加了一行
<constructor-arg ><null/></constructor-arg>
就令我的服务起死回生,神奇神奇,我的猜测是这行的位置恰好是密码位,传入null刚好对应无密码访问,才使流程继续进行下去。
写程序不能只看结果,也要了解过程,以上只是恰好完善了服务,只有当我真正理解了流程才有更好的编辑。
也希望各位同行进行指点~