はじめに
あまり見たことのないエラーで躓いたので備忘録です。
問題
SpringBootで開発したアプリケーションをデプロイ後、エラー画面が出ていたのでCloudWatchでログを確認したら以下のようなログが。
どうやらredis系のエラーのようです。
exception": "org.springframework.data.redis.serializer.SerializationException: Cannot deserialize
ローカルでアプリケーション起動して確認してもこのようなログは出なかったので不思議に思いました。
解決方法
AWSのElasticCache→対象のredisを再起動で解決しました。
デプロイした環境のredisがうまく動いてなかったんですかね。
おわりに
恥ずかしながら、シリアライズというものを理解していなかったのでお勉強してきました。
シリアライズとは、オブジェクトをバイトストリームや文字列形式に変換し、キャッシュストレージ(例:メモリ、ディスク)に一時保存するプロセスを指します。これにより、再利用可能なデータを迅速にアクセスでき、システムのパフォーマンスを向上させることができます。
一方、デシリアライズはキャッシュからデータを取り出し、利用可能なオブジェクトやデータ構造に変換するプロセスを指し、アプリケーションがこのデータを利用できるようにします。
今回はSerializationException: Cannot deserializeとあるように、保持したキャッシュデータ(redisから)の復元ができずにエラーになっていたということでしょうか。
何かの影響でキャッシュした時と取り出す時のデータがズレてしまいキャッシュデータを取り出せなかった、とかですかね。
単純な解決法でしたが、同じエラーで躓いた方はぜひ参考までに🙏
参考