デフォルトでは、ConcurrentMapCacheManager の ConcurrentMapCache をキャッシュ コンポーネントとして使用します。
ConcurrentMap を使用する場合、データは ConcurrentMap<object></object>
に保存されます。
実際、開発プロセスでは、いくつかのキャッシュ ミドルウェアを使用することがよくあります。
たとえば、私たちは redis、memcache (ehcache を含む) などをよく使用します。私たちは皆、何らかのキャッシュ ミドルウェアを使用しています。
以前に原理を説明したときに、springboot が多くのキャッシュ構成をサポートしていることもわかりました。
次の図に示すように:
デフォルトの開始構成はSimpleCacheConfigurationです。
他のキャッシュはいつ有効になりますか?
ctrl n を使用してこれらの構成クラスを検索し、その中に入って条件を確認できます。
##redis イメージの開始
docker run -d -p 6379:6379 --name myredis [REPOSITORY] docker ps
##redis 操作リスト
#Redis スターターの紹介
##
## redis の原理について簡単に説明しましょう
この RedisAutoConfiguration は、コンテナーに 2 つのコンポーネントを追加します:
コンテナーに追加されるコンポーネント。1 つは と呼ばれます。 RedisTemplate、もう 1 つは StringRedisTemplate という 2 つのものです。
Redis を操作するには、この 2 つが使用されます。
これは、以前誰もがデータベースを操作するために使用していた jdbcTemplate と同じです。
これらは、Spring が Redis の操作を簡素化するために使用する 2 つのテンプレートです。これら 2 つをプログラムで使用したい場合は、それらを自動的に挿入するだけです。
#redis テスト
##redis テスト保存オブジェクト
# これらの理解できないことはすべて、それらはすべて次の結果です。連載化。
デフォルトのシリアライザーは、使用される JDK シリアライザーです。
json シリアライザーに切り替えましょう。それで終わりです。
次に、オブジェクトの保存を再度テストします。
#これは、シリアライザーの変更が成功したことを示しています。
これにより、後でオブジェクトを保存したい場合は、多くの場合シリアライザーを変更する必要があることがわかります。
#テストキャッシュ
以前は ConCurrentMap のキャッシュ マネージャーを使用していました。
このキャッシュ マネージャーは、キャッシュ コンポーネントの作成に役立ちます。
キャッシュ コンポーネントは実際にキャッシュ内で CRUD 作業を実行します。
redis を導入したら、何が起こるでしょうか?
自動構成レポートを有効にできるように、application.properties で debug=true を設定します。
この時点で、プログラムを再起動し、コンソールで検索します。
どの自動構成クラスが効果的かを確認してください。
有効になっている元のデフォルトは、SimpleCacheConfiguration です。
redis 関連のスターターを導入したので、プログラムはデフォルトで RedisCacheConfiguration を開始します。
プログラムを起動して直接テストしてください。
初めてクエリを実行するときは、データベースにクエリを実行することを意味します。
2 回目のクエリ実行時には、コンソールからの出力はなく、キャッシュがクエリされたことを示しています。
キャッシュは、デフォルトでは redis によってのみ有効になります。
その場合、それは Redis 内にある必要があります。
#3. この再配布テンプレートは、redisautoconfiguration によって作成されました。この再配布テンプレートで使用されるデフォルトのシリアル化メカニズムは jdkserializationredisserializer
CacheManager をカスタマイズする必要があります。
redis を使用するときにデフォルトのシリアル化ルールを変更したい場合、どうすればよいでしょうか?
redisCacheManager をカスタマイズしてから、redisTemplate をカスタマイズし、json 関連のシリアライザーを redisTemplate に渡すことができます。データベース#残っている小さな問題
データの一部をデータベースの部門テーブルに置きます:
対応するサービスを書きましょう
プロジェクトのテストを開始します
#次に、redis にデータがあるかどうかを確認してみましょう。
redis に dept 関連のデータがあることがわかりました。
dept を 2 回目にクエリするときは、redis をキャッシュする必要があります。
しかし、2回目に確認したところ、次のようなエラーが発生しました。
上記で報告されたエラーは、json を読み取れないことを意味します。
部門の json オブジェクトを従業員の json オブジェクトに変換する必要があるためですが、これは不可能です。
これは、配置した redisCacheManager が運用担当者向けであるためです。
つまり、今私たちが見ている効果は非常に魔法的です。
キャッシュされたデータは Redis に保存できます。
しかし、キャッシュから 2 回目にクエリを実行する場合、キャッシュを逆シリアル化して戻すことはできません。
私たちが保存しているのは部門の json データであり、キャッシュマネージャーは従業員のテンプレートを使用してデフォルトで Redis を操作していることがわかりました。
これは従業員データのみを逆シリアル化できます。
現時点では、redisCacheManager が 2 つあります。どちらを使用すればよいでしょうか?
サービス内で指定可能です。
そして、コーディングプロセス中に、このcacheManagerを操作することでキャッシュを取得できます。
以上がSpringbootキャッシュRedis統合方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。