Hystrix admite el resultado de una solicitud en caché, y la siguiente solicitud con la misma clave obtendrá directamente el resultado del caché, reduciendo la sobrecarga de la solicitud. Para usar esta función, debe administrar HystrixRequestContext. Si la solicitud B desea usar el caché de la solicitud A, A y B deben estar en el mismo contexto. Se puede construir un contexto a través de hytrixRequestContext.initializeContext () y context.shutdown (). Todas las solicitudes entre estas dos declaraciones están en el mismo contexto. Por supuesto, este proceso de gestión se puede implementar a través de un filtro personalizado. Consulte el artículo anterior //www.vevb.com/article/140527.htm
Anotación de caché de solicitud de hytrix
@Cacheresult El método agregado a esta anotación habilitará el almacenamiento en caché de solicitudes. De manera predeterminada, todos los parámetros del método se utilizan como teclas de caché, lo que significa que el caché solo se almacenará en caché si todos los parámetros del método son consistentes.
@ServicePublic Class UserCacheservice {@aUtowired userfeignClient UserFeignClient; / *** @hytrixcommand's requitCache.Enabled puede controlar si el almacenamiento en caché es compatible* Solo cuando se agrega @Cacheresult puede cache, incluso si requestCache.Enabled = true* @param ID user Id* @return especificado*/ @cacheresult @hystrixcommand (commandPreperties = {@HyStrixPriveperty (name = "n. "verdadero")}) Usuario público FindUserById (ID de Integer) {return userFeignClient.FinduserById (id); }}Si requestCache.Enabled se establece en falso, el caché no funcionará incluso si se agrega @Cacheresult.
@Cachekey Esta anotación le permite especificar la tecla caché
@Cacheresult @hystrixCommand (comandanteproperties = {@hystrixproperty (name = "requestCache.enabled", value = "true")}) Usuario público FinduserByIdname (@cachekey ID de entero, nombre de cadena) {devuelve el usuario del usuario. }En el código anterior, modificamos el campo ID con @CacheKey, lo que indica que mientras la ID sea la misma, el caché se almacenará en caché de forma predeterminada y no tiene nada que ver con el campo Nombre. Si especificamos la propiedad CacheKeyMethod de @Cacheresult, la anotación @Cachekey no es válida.
@Cacheremove La función de esta anotación es invalidar el caché
/** * Specify the cache of this method when the findUserById is called through the @CacheRemove annotation * @param id User id * @param name User name * @return Specified user*/ @CacheResult @CacheRemove(commandKey = "findUserById") @HystrixCommand(commandProperties = { @HystrixProperty(name="requestCache.enabled",value = "true")}) Usuario público FindUserByIdAndName2 (@CacheKey ID de entero, nombre de cadena) {return userFeignClient.FinduserById (id); }El código anterior especifica que el valor de la propiedad @Cacheremove CommandKey es FounduserByid, lo que significa que cuando se llama a FindUserByid, se eliminará el caché de este método.
Consulte la versión completa del código: https://github.com/jingangwang/micro-service
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.