java redis 连接超时重试示例
时间: 2023-07-11 09:07:33 浏览: 146
java基于jedisLock—redis分布式锁实现示例代码
以下是使用 Jedis 连接 Redis 的 Java 代码示例,其中包括了连接超时重试的逻辑:
```java
import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisConnectionException;
import java.util.concurrent.TimeUnit;
public class RedisExample {
private static final String REDIS_HOST = "localhost";
private static final int REDIS_PORT = 6379;
private static final int MAX_RETRIES = 3;
private static final long RETRY_INTERVAL = 5; // seconds
public static void main(String[] args) {
Jedis jedis = null;
int retryCount = 0;
while (jedis == null && retryCount < MAX_RETRIES) {
try {
jedis = new Jedis(REDIS_HOST, REDIS_PORT);
jedis.connect();
} catch (JedisConnectionException e) {
System.err.println("Failed to connect to Redis, retrying in " + RETRY_INTERVAL + " seconds.");
retryCount++;
try {
TimeUnit.SECONDS.sleep(RETRY_INTERVAL);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
if (jedis == null) {
System.err.println("Failed to connect to Redis after " + MAX_RETRIES + " retries.");
return;
}
// Redis connection successful, do something with jedis instance
System.out.println("Connected to Redis successfully!");
jedis.close();
}
}
```
在以上示例中,我们使用了 Jedis 提供的 `JedisConnectionException` 异常来判断是否连接 Redis 失败,并在连接失败时进行重试。如果重试次数超过了 `MAX_RETRIES`,则认为连接失败。
在连接失败后,我们使用了 `TimeUnit.SECONDS.sleep(RETRY_INTERVAL)` 方法来让线程等待一段时间后再进行重试,这里的等待时间为 `RETRY_INTERVAL` 秒。
当连接成功后,我们可以使用 `jedis` 对象进行 Redis 操作。注意,在使用完 `jedis` 后,我们需要调用 `jedis.close()` 方法将连接释放。
阅读全文