Hystrixはキャッシュされた1つのリクエスト結果をサポートし、同じキーを使用した次のリクエストはキャッシュの結果を直接取得し、要求をオーバーヘッドに削減します。この関数を使用するには、HystrixRequestContextを管理する必要があります。リクエストBがリクエストaの結果キャッシュを使用する場合、aとbは同じコンテキストでなければなりません。コンテキストは、HystrixRequestContext.InitialIzeContext()およびContext.ShutDown()を介して構築できます。これら2つのステートメント間のすべての要求は、同じコンテキストにあります。もちろん、この管理プロセスはカスタムフィルターを介して実装できます。前の記事//www.vevb.com/article/140527.htmを参照してください
Hystrix要求キャッシュアノテーション
@cacheresultこのアノテーションに追加されたメソッドは、要求のキャッシングを可能にします。デフォルトでは、メソッドのすべてのパラメーターはキャッシュキーとして使用されます。つまり、メソッドのすべてのパラメーターが一貫している場合にのみキャッシュがキャッシュされます。
@servicepublic class usercacheservice {@autowired private userfeignclient userfeignclient; / *** @hystrixcommandのrequestcache.enabledは、キャッシュがサポートされるかどうかを制御できます* @cacheresultが追加された場合にのみ、requestcache.enabled = true* @param id user id* @return specified user*/ @cacheresult @hystrixcommand(commandproperty = {@hystrixproperty( "commytrixproperty(" "@hystrixproperty) "true")})public user finduserbyid(integer id){return userfeignclient.finduserbyid(id); }}requestCache.Enabledがfalseに設定されている場合、 @cacheresultが追加されてもキャッシュは機能しません。
@CacheKeyこの注釈により、キャッシュキーを指定できます
@cacheresult @hystrixcommand(commandproperties = {@hystrixproperty(name = "requestcache.enabled"、value = "true")})public user finduserbyidandname(@cachekey integer id、string name){return userfeignclient.finduserbyid(id); }上記のコードでは、@CacheKeyでIDフィールドを変更し、IDが同じである限り、キャッシュがデフォルトでキャッシュされ、名前フィールドとは何の関係もないことを示しています。 @cacheresultのcachekeymethodプロパティを指定すると、 @cachekeyアノテーションが無効です。
@cacheremoveこの注釈の機能は、キャッシュを無効にすることです
/ ** * finduserbyidが @cacheremove annotationを介して呼び出されたときにこのメソッドのキャッシュを指定 * @param id user id * @return指定されたユーザー */ @cacheremove(commandkey = "finduserbyid")@hystrixcommand = @hystrixproperty( "@hystrixproperty(" @hystrixproperty) = "true")})public user finduserbyidandname2(@cachekey integer id、string name){return userfeignclient.finduserbyid(id); }上記のコードは、@cacheremoveプロパティコマンドキーの値がFunduserbyidであることを指定しています。つまり、finduserbyidが呼び出されると、このメソッドのキャッシュが削除されます。
コードのフルバージョン:https://github.com/jingangwang/micro-serviceを参照してください
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。