jedis功能強大,但是不能像nodejs一樣指定從slave中讀數據,使數據量讀寫量較大時讀寫分離,減少redis壓力.
我們可以利用jedis中的方法封裝一個類似於此的方法.
github地址: https://github.com/candyleer/jedis-enhance
使用方法如:
指定masterName名稱,sentinels 地址,並定義一個連接池,初始化后可以從中獲取一個jedis連接,支持哨兵的master切換后重新選舉合適的slave,如果當前連接的slave掛了,需要重新啟動服務進行連接(因為此時不會觸發redis哨兵自動master選舉.)
<bean id="jedisSentinelPool" class="com.candy.cache.jedis.JedisSentinelPool">
<constructor-arg name="masterName" value="test"/>
<constructor-arg name="sentinels" value="127.0.0.1:26279,127.0.0.1:36379" />
<constructor-arg name="poolConfig" ref="poolConfig" />
<constructor-arg name="role" value="slave" />
<constructor-arg name="timeout" value="5000" />
</bean>