redis的sentinel使用以及spring集成方面的问题

现在的情况是这样的:我已经在linux端做好了master以及两个slave的redis,sentinel配置Redis.xml如下配置:<beanid="jedisCo... 现在的情况是这样的:
我已经在linux端做好了master以及两个slave的redis,sentinel配置
Redis.xml如下配置:
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="usePool" value="true"></property>
<property name="hostName" value="192.168.86.5" />
<property name="port" value="6371" />
<property name="password" value="" />
<property name="timeout" value="100000" />
<property name="database" value="0"></property>
<constructor-arg index="0" ref="jedisPoolConfig" />
</bean>

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="300" />
<property name="maxIdle" value="100" />
<property name="maxWaitMillis" value="1000" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="true" />
</bean>

<bean id="jedisPool" class="redis.clients.jedis.JedisSentinelPool">
<constructor-arg index="0" value="mymaster" />
<constructor-arg index="1">
<set>
<value>192.168.86.5:26370</value>
<value>192.168.86.5:26372</value><!--配置了两个哨兵 -->
</set>
</constructor-arg>
<constructor-arg index="2" ref="jedisPoolConfig" />
</bean>

现在能够正常运行程序,redis能够正常的存入信息。当我断掉master(端口号6371),linux端slave能自动选举出新的master,eclipse也有相应的反应:
十一月 30, 2015 12:03:36 下午 redis.clients.jedis.JedisSentinelPool initPool
信息: Created JedisPool to master at 192.168.86.5:6372

但是程序的redis无法再存取数据了。
经过我单步运行程序:发现已经从数据库中取到了数据,问题是出在将数据放到redis这一步:redisHelper.setUser(sessionUserId, _user);

我猜想是因为redis的6371这个端口断掉后,程序仍然向这个端口请求,所以导致报错。(当我再启动6371后,redis又能存取数据了,虽然已经变成slave,无法再传递数据)

但是带我的老司机想让我实现:当一个master挂掉之后,程序能够在新选出的master中继续存取数据。

我设想了一个方法,<property name="port" value="6371" />将这个端口改成监听,监听变化后的master端口号。我也没看到百度上有人这样做,也不知道redis能不能这样做,甚至也怀疑老司机的想法能不能实现。求各位指点一下,谢谢,感激不尽。
展开
 我来答
匿名用户
2015-12-01
展开全部
spring-data-redis 中的核心操作类是 RedisTemplate<K, V>
可以看出 key 和 value 都是泛型的,这就涉及到将类型进行序列化的问题了
所就在 RedisTemplate 中还有几个 RedisSerializer~
1)redisConnectionFactory()配置了如何连接Redsi服务器(如何安装Redis,
2)oxmSerializer()是我新增的,用于定义一个基于Jaxb2Marshaller的OxmSerializer Bean(后面将会用到)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式