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的时候 返回的值