今天与你们分享下,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 读写分离。