具體情境如下,首先在linux機(jī)器上開啟redis,
配置如下~
port:6379
ip:192.168.135.145
做法~在win下的idea連接linux中已經(jīng)開啟的redis,
看java后端代碼~
```java
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class jredisDemo01 {
? ? public static void main(String[] args) {
? /*? ? JedisPool jedisPool = new JedisPool("192.168.135.145",6379);
? ? ? ? Jedis jedis1 = jedisPool.getResource();
? ? ? ? jedis1.set("person","name");*/
? ? ? ? try {
? ? ? ? ? ? Jedis jedis = new Jedis("192.168.135.145",6379);
? ? ? ? ? ? jedis.set("fruit","lisi");
? ? ? ? ? ? String fruit = jedis.get("fruit");
? ? ? ? ? ? System.out.println(fruit);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
```
運行后結(jié)果報錯~不能處理DNSname,根據(jù)提示查找可能是DNS解析問題,于是將host文件修改,添加了 192.168.135.145? redis
問題依舊存在;
```java
redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name.
at redis.clients.jedis.DefaultJedisSocketFactory.connectToFirstSuccessfulHost(DefaultJedisSocketFactory.java:63)
at redis.clients.jedis.DefaultJedisSocketFactory.createSocket(DefaultJedisSocketFactory.java:87)
at redis.clients.jedis.Connection.connect(Connection.java:180)
at redis.clients.jedis.Connection.sendCommand(Connection.java:152)
at redis.clients.jedis.Connection.executeCommand(Connection.java:121)
at redis.clients.jedis.Jedis.set(Jedis.java:4725)
at com.gavin.jredisDemo01.main(jredisDemo01.java:16)
Suppressed: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:591)
at redis.clients.jedis.DefaultJedisSocketFactory.connectToFirstSuccessfulHost(DefaultJedisSocketFactory.java:73)
... 6 more
```
異常~`Failed to connect to any host resolved for DNS name.? connect timed out`
異常發(fā)生之前----->>
1,注掉redis配置文件中bind--->>使得外部可以連接到redis? (也可以指定連接地址)

2,保護(hù)模式已經(jīng)關(guān)閉--->>不用輸入密碼可以連接
3,以設(shè)置守護(hù)模式 -->>使得redis可以在后臺運行
可能是端口號沒開放?
最后查看端口號是否對外開放~
```c
[root@localhost bin]# sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
success
[root@localhost bin]# systemctl restart firewalld
```
>注意~之后要重啟防火墻,使得開放端口生效
再次運行代碼~正常了