jedis 原生的配置连接如何配置密码 将bin生命到springxml的bean

时间:2022-06-09 17:29:32

reidis 一般使用的时候都是本机连,限制外网连接,但是今天我有个需求就是远程连接一个带密码的redis  

于是有了这篇文章

  redis.server= redisServer://password:woshimima@47.94.66.66:6379

	<!-- redis单机版 -->
 	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">

            <!--第一种构造函数函数-->

		<!--	
		<constructor-arg name="host" value="${redis.host}"/>	
 		<constructor-arg name="port" value="${redis.port}"/>	 
 		-->

            <!--第二种构造函数函数-->

 		<constructor-arg name="host" value="${redis.server}"/>
	</bean>

第一种就不多解释填上IP和端口号就完了,但是如果我们需要直接配置redis密码的时候只能使用其他的构造函数一下是jedis其中一个构造函数

public JedisPool(final String host) {
    URI uri = URI.create(host);  //将接受到的string转换成uri
    if (JedisURIHelper.isValid(uri)) {
      String h = uri.getHost();  //获取到ip
      int port = uri.getPort();  //获取到端口号
      String password = JedisURIHelper.getPassword(uri);  //获取密码 接下来详解这句
      int database = JedisURIHelper.getDBIndex(uri);
      boolean ssl = uri.getScheme().equals("rediss");
      this.internalPool = new GenericObjectPool<Jedis>(new JedisFactory(h, port,
          Protocol.DEFAULT_TIMEOUT, Protocol.DEFAULT_TIMEOUT, password, database, null,
            ssl, null, null, null), new GenericObjectPoolConfig());
    } else {
      this.internalPool = new GenericObjectPool<Jedis>(new JedisFactory(host,
          Protocol.DEFAULT_PORT, Protocol.DEFAULT_TIMEOUT, Protocol.DEFAULT_TIMEOUT, null,
          Protocol.DEFAULT_DATABASE, null, false, null, null, null), new GenericObjectPoolConfig());
    }
  }
    //这是JedisURIHelper中的方法 也就是上面获取密码的方法
  public static String getPassword(URI uri) {
    String userInfo = uri.getUserInfo();
    if (userInfo != null) {
      return userInfo.split(":", 2)[1];
    }
    return null;
  }

//有事改天在写  获取密码这个还要参考uri.getUserInfo的时候 返回的值