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

  • 相关阅读:
    socket实现一个简单的echo服务
    Netty实现丢弃服务协议(Netty4.X学习一)
    大型情感剧集Selenium:8_selenium网页截图的四种方法
    python原类、类的创建过程与方法
    Flask使用bootstrap为HttpServer添加上传文件功能
    充满含金量的一场云原生Meetup,入场券免费发送中……
    Hadoop伪分布式集群的安装部署
    从缓冲池命中率角度判断自己的MYSQL数据库是否需要扩容内存
    MySQL分区表概述
    如何防止mysql数据库被勒索
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/6848997.html
Copyright © 2011-2022 走看看