Redisバージョン:3.2.0 Jedisバージョン:2.8.1
以下は、redisに接続するための私のJavaコードです:
public class TestRedis {
public static void main(String[] args) {
String Host = args[0];
int port = Integer.parseInt(args[1]);
try (Jedis jedis = new Jedis(Host, port)) {
System.out.println("Connected to jedis " + jedis.ping());
} catch(Exception e){
e.printStackTrace();
}
}
}
このプログラムは、redisがインストールされているマシンで実行しています。このマシンのIPアドレスは192.168.1.57です
Host = "localhost"とport = "6379"を引数として指定すると、redisとの接続が正常に確立されます。
ただし、引数にHost = "192.168.1.57"およびport = "6379"を指定すると、以下の例外が発生します。
redis.clients.jedis.exceptions.JedisConnectionException: Java.net.ConnectException: Connection refused
at redis.clients.jedis.Connection.connect(Connection.Java:164)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.Java:80)
at redis.clients.jedis.Connection.sendCommand(Connection.Java:100)
at redis.clients.jedis.Connection.sendCommand(Connection.Java:95)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.Java:93)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.Java:105)
at TestRedis.main(TestRedis.Java:14)
Caused by: Java.net.ConnectException: Connection refused
at Java.net.PlainSocketImpl.socketConnect(Native Method)
at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:339)
at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:200)
at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:182)
at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)
at Java.net.Socket.connect(Socket.Java:579)
at redis.clients.jedis.Connection.connect(Connection.Java:158)
... 6 more
助けてください...
これに影響を与えるいくつかの設定があります:bindおよびprotected-mode。これらは連携して、新規インストールでセキュリティのベースラインを提供します。
redis.conf
ファイルで以下を見つけて、コメントアウトします。
bind 127.0.0.1
その前に#
を追加することにより:
# bind 127.0.0.1
または、コメントアウトしたくない場合は、次のようにeth0
/em1
インターフェイスのIPを追加することもできます。
bind 127.0.0.1 192.168.1.57
また、パスワードセキュリティを使用している場合を除き、次の変更を行って保護モードをオフにする必要があります。
protected-mode yes
に:
protected-mode no
関連するドキュメントを読み、これら両方の変更によるセキュリティへの影響を理解してください。
これらの変更を行った後、redisを再起動します。