springboot集成redis,并用fastjson2进行序列化,怎么写
时间: 2023-11-14 08:10:52 浏览: 163
首先,在Spring Boot项目中添加Redis和Fastjson的依赖:
```xml
<!-- Redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- Fastjson依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
```
接着,在application.yml中配置Redis连接信息:
```yaml
spring:
redis:
host: localhost
port: 6379
password:
database: 0
```
然后,我们可以创建一个RedisUtil类来操作Redis,示例如下:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class RedisUtil {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 添加缓存
* @param key
* @param value
* @param expireTime
*/
public void set(String key, Object value, long expireTime) {
if (value instanceof String) {
redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);
} else {
redisTemplate.opsForValue().set(key, JSON.toJSONString(value, SerializerFeature.WriteClassName), expireTime, TimeUnit.SECONDS);
}
}
/**
* 获取缓存
* @param key
* @param clazz
* @param <T>
* @return
*/
public <T> T get(String key, Class<T> clazz) {
Object value = redisTemplate.opsForValue().get(key);
return value == null ? null : JSON.parseObject(value.toString(), clazz);
}
/**
* 删除缓存
* @param key
*/
public void delete(String key) {
redisTemplate.delete(key);
}
}
```
在上面的代码中,我们使用了Fastjson对对象进行序列化和反序列化,并且在set方法中判断了value的类型,如果是String类型,则直接存储,否则使用Fastjson将对象序列化后再存储。在get方法中,我们先获取缓存的值,然后判断是否为null,如果不为null,则使用Fastjson将值反序列化成指定的class类型。
最后,在需要使用Redis的地方,我们可以注入RedisUtil,然后调用它的方法即可:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private RedisUtil redisUtil;
@GetMapping("/test")
public String test() {
String key = "test";
String value = "hello world";
redisUtil.set(key, value, 60);
String result = redisUtil.get(key, String.class);
return result;
}
}
```
以上就是在Spring Boot项目中集成Redis并使用Fastjson进行序列化的示例。
阅读全文