SpringDataRedis逆シーケンス化異常

922 ワード

需要は1つのインタフェースのアクセス量を統計し、1つのipは1回だけです.
    インタフェースアクセス量はもともとそれほど大きくないのでredisの自己付加価値でアクセス数を記録することを考慮し,異なるインタフェースの自己付加価値を1つのhashMapに統一した.
しかし、値の取得時に逆シーケンス化異常が報告されなかった.
    資料を調べるとredisTempleのRedisSerializerに問題があることがわかりました.
    Springは多くのRedisSerializerの選択を提供し、多くのドキュメントはjackson、JDK、stringの3つしか言及していません.
    プロジェクトにはもともとpojoクラスのストレージが多く使われていましたが、デフォルトではJDKRedisSerializerが使われていますが、このシーケンス化方式は付加価値を取ると逆シーケンス化異常が報告されます.
Redisのメモリ値を見ると、redisTemple.opsHashの自己付加価値はJDKRedisSerializerのシーケンス化されていないことがわかりました.私が伝えたint値は、redisに存在するのがint値ですが、取るときにJDKRedisSerializerに必要なのはbyte[]なので、当然異常を報告しました.
    ではjacksonで?jsonフォーマットで、速度が速く、体積が小さい.ただし、jacksonはpojoを保存するときに、逆シーケンス化時に正常に変換できるように、コンストラクション関数にjavaTypeを追加する必要があります.
    どちらも取捨選択しにくい時、私は偶然一人の大物が自分で書いた逆シーケンス化ツールをめくった.
GenericJackson2JsonRedisSerializer

   しかし、springはこのアイデアを吸収し、jacksonを改善し、javaTypeを追加する必要がなく、直接呼び出すことができます.