今天與你們分享下,Jedis鏈接池使用。先看一段JAVA 代碼:java
JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(100); JedisPool pool = new JedisPool(config, "ip地址", 6379); return pool.getResource();
這段代碼是最簡單鏈接redis的鏈接池代碼,單機鏈接,存在單點故障。不過也看這個IP是不是VIP, redis能夠作成HA模式。架構以下圖:nginx
redis 兩臺服務器,經過專業的HA軟件實現主從管理,對外經過VIP提供服務,但主機宕機,HA會切換到從機運行,同時改變從機的角色爲: master.。 這種架構不適合作讀寫分離,只有一臺機器ONLINE 狀態。redis
Redis 分片架構,先看圖。典型的分片架構以下圖:服務器
該架構適合作併發較高,訪問量大,若是採用jedis鏈接,能夠實現Hash 一致性數據分佈。具體代碼以下:架構
JedisPoolConfig config = new JedisPoolConfig(); List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); shards.add(new JedisShardInfo("10.20.15.236", 6379)); shards.add(new JedisShardInfo("10.20.15.236", 6380)); // 構造池 ShardedJedisPool shardedJedisPool = new ShardedJedisPool(config, shards); ShardedJedis shardedJedis = shardedJedisPool.getResource();
Redis 哨兵機制併發
Redis自己提供一種HA方式,直接上圖:code
在服務器上啓動多個哨兵進程,經過哨兵進程監控MASTER節點,當master節點宕機 , Sentinel 進程就會切換到從機。進程
Sentinel 進程的配置文件以下: ip
bind 10.20.15.236 port 7000 dir "/var/work/redis/tmp" sentinel myid 466427b54fe410637a35b60ee3fbf995411b71da sentinel monitor mymaster 10.20.15.241 6379 1 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 150 # Generated by CONFIG REWRITE sentinel config-epoch mymaster 6 sentinel leader-epoch mymaster 6 sentinel known-slave mymaster 10.20.15.236 6379 sentinel current-epoch 6
配置文件在這就不細說了。get
Jedis 如何使用:
Set<String> sentinels = new HashSet<String>(); sentinels.add("10.20.15.236:7000"); sentinels.add("10.20.15.241:7000"); JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);
注意,該代碼的IP地址是Sentinel 進展的IP和端口號。
今天就介紹到這,下次,咱們詳細介紹單節點jedis,分片節點,哨兵HA 讀寫分離。