#java #redis
#java #redis
Вопрос:
Я использую последнюю стабильную версию Redis и клиент 3.0.1 (я также пробовал 2.8.1) в Maven. Соединение хорошее, если я меняю адрес на плохой, то это ошибка (исправно). Эта команда работает в консоли redis. Но если я использую ее в приложении в новом потоке или для одноразового использования, это зависающее приложение (нулевая ошибка, но приложение не отвечает). Почему это не работает? Как это исправить?
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
new Jedis("localhost", 6379, 10000).subscribe(new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println(channel message);
}
@Override
public void onPMessage(String pattern, String channel, String message) { }
@Override
public void onSubscribe(String channel, int subscribedChannels) { }
@Override
public void onUnsubscribe(String channel, int subscribedChannels) { }
@Override
public void onPUnsubscribe(String pattern, int subscribedChannels) { }
@Override
public void onPSubscribe(String pattern, int subscribedChannels) { }
}, "test");
Комментарии:
1. Пожалуйста, покажите точные команды, которые вызывают проблему, как на консоли Redis, так и в вашем Java-коде. Кстати говоря, используете ли вы Jedis или какую-либо другую библиотеку Java?
2. Сначала попробуйте создать новый
Jedis
объект с помощью вашего вызоваnew Jedis("localhost", 6379, 10000)
. Поиграйте с ней и убедитесь, что она работает. Вы можете проверить консоль командной строки Redis, чтобы проверить любые команды, которые вы пытаетесь выполнить. Затем попробуйте выполнить вызовsubscribe
из вашего Java-кода в режиме отладки. Что происходит? Есть ли какие-либо сообщения об ошибках?3. 1551793936.464448 [0 127.0.0.1:52434] «SUBSCRIBE» «тест»