RedisにJavaオブジェクトを格納する方法

JavaオブジェクトをRedisに格納するには、次の2つの方法があります。

  1. シリアライゼーション:Java オブジェクトをバイト配列にシリアライズし、そのバイト配列を Redis に格納します。Java 内蔵のシリアライゼーション機構(例:ObjectOutputStream と ObjectInputStream)を使用できます。以下にサンプルコードを示します。
// 存储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;
}
  1. JSONシリアライゼーションを使用する: JavaオブジェクトをJSON文字列に変換し、JSON文字列をRedisに格納します。JacksonまたはGsonなどのサードパーティJSONライブラリを使用できます。サンプルコードを以下に示します。
// 存储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オブジェクトを保存すると、オブジェクトバージョンの互換性やパフォーマンスといった課題が生じる可能性があるため、実際のニーズやユースケースに応じて最適な保存方法を選択することが重要です。

bannerAds