zoukankan      html  css  js  c++  java
  • Jedis连接redis

    今天与大家分享下,Jedis连接池使用。先看一段JAVA 代码:

            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(100);
    
            JedisPool pool = new JedisPool(config, "ip地址", 6379);
            return pool.getResource();

    这段代码是最简单连接redis的连接池代码,单机连接,存在单点故障。不过也看这个IP是否是VIP, redis可以做成HA模式。架构如下图:

    redis 两台服务器,通过专业的HA软件实现主从管理,对外通过VIP提供服务,但主机宕机,HA会切换到从机运行,同时改变从机的角色为: master.。 这种架构不适合做读写分离,只有一台机器ONLINE 状态。

    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方式,直接上图:

    在服务器上启动多个哨兵进程,通过哨兵进程监控MASTER节点,当master节点宕机 , Sentinel 进程就会切换到从机。

    Sentinel 进程的配置文件如下: 

    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

    配置文件在这就不细说了。

    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和端口号。

  • 相关阅读:
    day02 Python 字符串编码
    地坛——我的最爱 (2006-11-12 09:33:18)
    心灵噬血虫 (2007-01-02 12:33:36)
    ArcSDE for oracle10g安装后post的时候出现错误
    创建featureclass,为它赋别名,并移动到数据集下
    feature.shape和feature.shapecopy的区别
    IPoint从自定义的投影坐标系转换到自定义的地理坐标系
    女儿傻 女儿悲 2014-2-23
    自嘲 2014-2-7
    写在双节 2014-2-14
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/6848997.html
Copyright © 2011-2022 走看看