1. 程式人生 > >redis代碼連接及遇到的問題

redis代碼連接及遇到的問題

bubuko sco lin cli gen connect apach ins plain

package com.study.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisUtil {

    private static final String host = "192.168.150.129";
    
    private static final int port = 6379;
    
    private static final
String password = "1234"; private static JedisPool jedisPool; public static Jedis getJedis() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(20); config.setMaxIdle(5); config.setTestOnBorrow(false); jedisPool
= new JedisPool(config,host, port,3000,password); Jedis jedis = jedisPool.getResource(); String code = jedis.auth(password); //如果沒有配置密碼驗證,這註掉這句話 //System.out.println("auth code :" + code); jedis.select(1);//選擇第二個數據庫演示 return jedis; } public static
void main(String[] args) { Jedis jedis = getJedis(); jedis.close(); } }

redis連接時遇到的問題:Caused by: java.net.ConnectException: Connection refused: connect

技術分享圖片
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    at redis.clients.util.Pool.getResource(Pool.java:53)
    at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
    at com.study.util.RedisUtil.main(RedisUtil.java:50)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
    at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:889)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:433)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:362)
    at redis.clients.util.Pool.getResource(Pool.java:49)
    ... 2 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at redis.clients.jedis.Connection.connect(Connection.java:184)
View Code

解決方法:

查看是否將默認只能本地訪問redis改為所有IP均可以訪問

bind 127.0.0.1 改為 bind 0.0.0.0

修改redis的配置文件redis.conf 將bind改為0.0.0.0

技術分享圖片

遇到的問題二:Caused by: java.net.SocketTimeoutException: connect timed out

技術分享圖片
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
    at redis.clients.util.Pool.getResource(Pool.java:53)
    at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
    at com.study.util.RedisUtil.getJedis(RedisUtil.java:29)
    at com.study.util.RedisUtil.main(RedisUtil.java:39)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
    at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:889)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:433)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:362)
    at redis.clients.util.Pool.getResource(Pool.java:49)
    ... 3 more
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at redis.clients.jedis.Connection.connect(Connection.java:184)
    ... 10 more
View Code

解決方法:

  • 1.關閉防火墻
  • systemctl stop firewalld.service

    技術分享圖片

  • 2 .開啟6379一個端口

  • firewall-cmd --zone=public --add-port=6379/tcp --permanent

    --permanent永久生效,沒有此參數重啟後失效

  • 重新載入
firewall-cmd --reload

技術分享圖片

代碼git地址:https://gitee.com/sjcq/redis.git

redis代碼連接及遇到的問題