### 异步方式
在 Spring Boot 中,通过 `Lettuce` 客户端可以方便地实现异步 Redis 操作。`Lettuce` 本身支持异步非阻塞的 I/O 操作,适用于对响应时间要求比较高的场景。
**依赖引入**
在 `pom.xml` 中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
**配置类**
配置 Redis 连接工厂和模板:
```java
import io.lettuce.core.RedisClient;
import io.lettuce.core.api.async.RedisAsyncCommands;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedisConfig {
@Bean
public RedisAsyncCommands<String, String> redisAsyncCommands() {
RedisClient redisClient = RedisClient.create("redis://localhost:6379");
return redisClient.connect().async();
}
}
```
**异步操作示例**
使用异步 API 设置和获取 Redis 数据:
```java
import io.lettuce.core.api.async.RedisAsyncCommands;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.concurrent.ExecutionException;
@Service
public class RedisService {
@Autowired
private RedisAsyncCommands<String, String> asyncCommands;
public void setValueAsync(String key, String value) throws ExecutionException, InterruptedException {
asyncCommands.set(key, value).get();
asyncCommands.get(key).thenAccept(val -> System.out.println("异步获取到的值: " + val));
}
}
```
### 同步方式
使用 `Jedis` 客户端可以实现同步 Redis 操作。同步方法通常用于需要确保操作顺序或不需要过度并发的场合。
**依赖引入**
在 `pom.xml` 中添加以下依赖:
```xml
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.0.1</version>
</dependency>
```
**配置类**
配置 Jedis Bean:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.Jedis;
@Configuration
public class JedisConfig {
@Bean
public Jedis jedis() {
return new Jedis("localhost", 6379);
}
}
```
**同步操作示例**
使用同步 API 设置和获取 Redis 数据:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
@Service
public class JedisService {
@Autowired
private Jedis jedis;
public void setValueSync(String key, String value) {
jedis.set(key, value);
System.out.println("同步获取到的值: " + jedis.get(key));
}
}
```
通过以上的方法,您可以在 Java Spring Boot 项目中灵活运用异步和同步方式与 Redis 进行数据交互,从而满足不同的业务需求。每种方法各有优劣,选择时应结合具体的应用场景。