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 读写分离。

相关文章
相关标签/搜索