يدعم Hystrix نتيجة طلب مؤقت واحد ، وسيقوم الطلب التالي مع نفس المفتاح مباشرة بجلب النتيجة من ذاكرة التخزين المؤقت ، مما يقلل من الطلب. لاستخدام هذه الوظيفة ، يجب عليك إدارة HystrixRequestContext. إذا أراد الطلب B استخدام ذاكرة التخزين المؤقت للطلب A و A و B في نفس السياق. يمكن إنشاء سياق من خلال hystrixRequestContext.InitializeContext () و context.shutdown (). جميع الطلبات بين هذين البيانين في نفس السياق. بالطبع ، يمكن تنفيذ عملية الإدارة هذه من خلال مرشح مخصص. الرجوع إلى المقالة السابقة //www.vevb.com/article/140527.htm
Hystrix طلب التخزين المؤقت
cacheresult ستمكّن الطريقة التي تمت إضافتها إلى هذا التعليق التوضيحي للتخزين المؤقت للطلب. بشكل افتراضي ، يتم استخدام جميع معلمات الطريقة كمفاتيح ذاكرة التخزين المؤقت ، مما يعني أن ذاكرة التخزين المؤقت لن يتم تخزينها إلا إذا كانت جميع معلمات الطريقة متسقة.
servicepublic class UserCacheService {autowired userfeignclient userFeignClient ؛ / *** @hystrixCommand's requestCache.Endabled يمكنه التحكم في ما إذا كان التخزين المؤقت مدعومًا* فقط عند إضافة @cacheresult يمكن أن تخزين ذاكرة التخزين المؤقت ، حتى إذا كان requestCache.Enabled = true* param معرف مستخدم المعرف* @regatertisterive uSiter) }) المستخدم العام FindUserById (integer id) {return userfeignclient.finduserById (id) ؛ }}إذا تم تعيين requestCache.endabled على خطأ ، فلن يعمل ذاكرة التخزين المؤقت حتى إذا تم إضافة CacherEsult.
cachekey يتيح لك هذا التعليق التوضيحي تحديد المفتاح المخزنة مؤقتًا
cacheresulthystrixCommand (commandproperties = {hystrixProperty (name = "requestCache.enabled" ، value = "true")}) المستخدم العام findUserByIdandName (cachekey integer id ، اسم السلسلة) }في الكود أعلاه ، قمنا بتعديل حقل المعرف باستخدام cachekey ، مما يشير إلى أنه طالما أن المعرف هو نفسه ، سيتم تخزين ذاكرة التخزين المؤقت افتراضيًا ، وليس له أي علاقة بحقل الاسم. إذا حددنا خاصية CacheKeyMethod لـ CacherEsult ، فإن chearkey inting غير صالح.
cacheremove وظيفة هذا التعليق التوضيحي هو إبطال ذاكرة التخزين المؤقت
/ ** * حدد ذاكرة التخزين المؤقت لهذه الطريقة عندما يتم استدعاء findUserById من خلال @cacheremove التعليق التوضيحي * param معرف معرف المستخدم * param اسم المستخدم * @user user */ cacheresult @cacheremove (commandKey = "finduserById") hystrixCommand (commandpropileties = {{ "true")}) المستخدم العام findUserByIdandName2 (@cachekey integer id ، اسم السلسلة) {return userfeignclient.finduserbyid (id) ؛ }يحدد الرمز أعلاه أن قيمة commandkey compherkey cacheremove تم العثور عليها ، مما يعني أنه عند استدعاء FindUserByid ، سيتم حذف ذاكرة التخزين المؤقت لهذه الطريقة.
يرجى الرجوع إلى النسخة الكاملة من الرمز: https://github.com/jingangwang/micro-service
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.