Hystrix поддерживает кэшированный результат запроса, а следующий запрос с тем же ключом будет напрямую получить результат из кеша, уменьшая накладные расходы на запрос. Чтобы использовать эту функцию, вы должны управлять HystrixRequestContext. Если запрос B хочет использовать кэш результатов запроса A, A и B должны быть в одном и том же контексте. Контекст может быть сконструирован через hystrixrequestcontext.initializecontext () и контекст.shutdown (). Все запросы между этими двумя утверждениями находятся в одном контексте. Конечно, этот процесс управления может быть реализован с помощью пользовательского фильтра. Обратитесь к предыдущей статье //www.vevb.com/article/140527.htm
Аннотация кеша запроса Hystrix
@Cacheresult Метод, добавленный к этой аннотации, позволит кэшировать запрос. По умолчанию все параметры метода используются в качестве ключей кэша, что означает, что кэш будет кэширован только в том случае, если все параметры метода будут согласованы.
@Servicepublic class usercacheservice {@autowired private userfeignclient userfeignclient; / *** @hystrixcommand's requestCache.Enabled может управлять, поддерживается ли кэширование* только при добавлении @CacherESult can Cache, даже если requestCache.enabled = true* @param id идентификатор пользователя* @return указанный пользователь*/ @cacheresult @hystrixcommand (commandPerties = @HyStrixPrixPr }) public user fineUserbyid (integer id) {return userfeignclient.finduserbyid (id); }}Если requestCache.Enabled установлен на false, кэш не будет работать, даже если @CacherESult будет добавлен.
@Cachekey Эта аннотация позволяет вам указать кэшированный клавиш
@Cacheresult @hystrixcommand (commandproperties = {@hystrixproperty (name = "requestCache.enabled", value = "true")}) общедоступный пользователь FindEserByIdandName (@Cachekey Integer Id, String name) {return userfeignclient.finduserbyid (id); }В приведенном выше коде мы изменили поле ID с помощью @Cachekey, указывая, что до тех пор, пока идентификатор одинаково, кэш будет кэширован по умолчанию, и он не имеет ничего общего с полем имени. Если мы указываем свойство CacheKeyMethod @CacherESult, аннотация @CacheKey является недействительной.
@CachereMove Функция этой аннотации состоит в том, чтобы аннулировать кеш
/ ** * Укажите кэш этого метода, когда finduSerByID вызывается через аннотацию @CacherEmove * @param id идентификатор пользователя * @param name Имя пользователя * @return Указанный пользователь */ @cacheresult @cacheremove (commandkey = "indueSerbyId") @HyStrixCommAnd (commandPerperties = {@HyStrixProperty (= nameShache = nameArxPorePOREPO "true")}) общедоступный пользователь findUserByIdandName2 (@cachekey Integer Id, String name) {return userfeignclient.finduserbyid (id); }Приведенный выше код указывает, что значение Commandkey Propertion @CachereMove является FoundErbyId, что означает, что при вызове FindUserByID кэш этого метода будет удален.
Пожалуйста, обратитесь к полной версии кода: https://github.com/jingangwang/micro-service
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.