實現功能描述:
redis伺服器進行Master-slaver-slaver-....主從配置,通過2台sentinel進行failOver容錯移轉,自動切換,採用該代碼完全可以直接用於實際生產環境。
題外話:
一般來說這樣的部署足以支援數以百萬級的使用者,但如果數量實在是太高,此時redis的Master-Slaver主從不一定能夠滿足,因此進行redis的分區。
本文不講解redis的分區,但如果你使用了,需要注意的按照另一篇文章的介紹:Sentinel&Jedis看上去是個完美的解決方案,這句話只說對了一半,
在無分區的情況是這樣,但我們的應用使用了資料分區-sharing,資料被平均分布到4個不同的執行個體上,每個執行個體以主從結構部署,Jedis沒有提供
基於Sentinel的ShardedJedisPool,也就是說在4個分區中,如果其中一個分區發生主從切換,應用所使用的ShardedJedisPool無法獲得通知,所有
對那個分區的操作將會失敗。文章中提出瞭解決方案,請參考《基於Redis Sentinel的Redis叢集(主從&Sharding)高可用方案》
該代碼類比多線程向redis中set/get。
1、maven依賴配置 [html] view plain copy <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.4.1.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency>
2、redis.properties [plain] view plain copy # Redis settings #sentinel1的IP和連接埠 im.hs.server.redis.sentinel1.host=192.168.62.154 im.hs.server.redis.sentinel1.port=26379 #sentinel2的IP和連接埠 im.hs.server.redis.sentinel2.host=192.168.62.153 im.hs.server.redis.sentinel2.port=26379 #sentinel的鑒權密碼 im.hs.server.redis.sentinel.masterName=155Master im.hs.server.redis.sentinel.password=hezhixiong #最大閑置串連數 im.hs.server.redis.maxIdle=500 #最大串連數,超過此串連時操作redis會報錯