在Redis中存储Java对象,可以使用以下两种方法:
// 存储Java对象到Redis
public void saveObjectToRedis(String key, Object object) {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(object);
byte[] bytes = bos.toByteArray();
redisTemplate.opsForValue().set(key, bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
// 从Redis中读取Java对象
public Object getObjectFromRedis(String key) {
byte[] bytes = (byte[]) redisTemplate.opsForValue().get(key);
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis)) {
return ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
// 存储Java对象到Redis
public void saveObjectToRedis(String key, Object object) {
try {
String json = objectMapper.writeValueAsString(object);
redisTemplate.opsForValue().set(key, json);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
// 从Redis中读取Java对象
public <T> T getObjectFromRedis(String key, Class<T> clazz) {
String json = (String) redisTemplate.opsForValue().get(key);
try {
return objectMapper.readValue(json, clazz);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
需要注意的是,使用序列化存储Java对象可能会导致一些问题,如对象版本的兼容性、序列化性能等。因此,根据实际需求和场景选择合适的存储方式。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: Java中entryset()的作用是什么