在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對象可能會導致一些問題,如對象版本的兼容性、序列化性能等。因此,根據實際需求和場景選擇合適的存儲方式。