Jedis鏈接redis

今天與你們分享下,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 讀寫分離。

相關文章
相關標籤/搜索