[Spring][Redis]@Cacheableとredisの統合時のValueとKeyの理解

2145 ワード

2019年11/08:更新
まずは、ありがとうございましたZKKさんは私の間違いを指摘した.
寝槽、びっくりして、私は以前習ったことが間違っていると思っていました.私が自分でテストしなければ、もう少しであなたを信じるところだった.
この2,3日暇を利用して、@Cacheable関連のソースコードを追跡して再度確認した結果は以下の通りです.
1)Springの@Cacheable注記を直接使用すると、呼び出されたredisのset関数は、生成されたKeyがvalueとnameの2つの文字列を通過する::接続する.記事の例のようにtestcache:#userName.
2)私のシステム上のテスト結果が上記の文章の結果であるのは、私のシステムがredisの関連関数をカスタマイズしたからである. 
------------------------------------------------------------------------------------------------------
@Cacheableについては、ネット上で多くの解釈がありますが、具体的には以下のFYIを参照してください.
私はここで主に私自身が@CacheableとRedisを統合している理解を記録します.
1)@Cacheableとredisを統合する場合は、redisのhsetデータ型を用いる.
@Cacheableの構文:
@Cacheable(value=”testcache”,key=”#userName”)

redisコマンドラインクライアントがhsetを使用する構文は、次のとおりです.
hset key field value

2)@Cacheableのvalueパラメータは実際にはhsetコマンドのkeyフィールドであり,@Cacheableのkeyパラメータはhsetのfieldフィールドであり,
最後の@Cacheable注記が存在する関数の戻り値はhsetコマンドのvalueフィールドである.
----------------------------------------------------------------------------------------------------------
FYI:
以下から抜粋します.https://blog.csdn.net/dreamhai/article/details/80642010:
@Cacheableは、メソッドにマークすることも、クラスにマークすることもできます.1つのメソッドにタグを付けると、メソッドがキャッシュをサポートしていることを示し、1つのクラスにタグを付けると、クラスのすべてのメソッドがキャッシュをサポートしていることを示します.キャッシュをサポートするメソッドの場合、Springは呼び出された後に戻り値をキャッシュし、次回同じパラメータを使用してメソッドを実行するときにキャッシュから結果を直接取得することができ、再実行する必要がないことを保証します.Springはメソッドの戻り値をキャッシュする際にキー値ペアでキャッシュされます.値はメソッドの戻り結果です.キーについては、Springは2つのポリシー、デフォルトポリシー、カスタムポリシーをサポートします.これは後述します.キャッシュをサポートするメソッドがオブジェクト内で呼び出されると、キャッシュ機能はトリガーされません.@Cacheableでは、value、key、conditionの3つのプロパティを指定できます. 
パラメータ
説明する
example
value
キャッシュの名前springプロファイルで定義するには、少なくとも1つを指定する必要があります.
例:@Cacheable(value="mycache")@Cacheable(value={"cache 1","cache 2"}
key
キャッシュされたkeyは、空にすることができます.SpEL式で記述するように指定した場合、指定しない場合は、デフォルトでメソッドのすべてのパラメータで組み合わせられます.
@Cacheable(value=”testcache”,key=”#userName”)
condition
キャッシュの条件は、空であってもよく、SpELで記述し、trueまたはfalseを返し、trueのみがキャッシュを行う
@Cacheable(value=”testcache”,condition=”#userName.length()>2”)