1. 概述

1.1 插件名称

  • 缓存插件

1.2 适用场景

  • 数据不会频繁更新,而且需要大量调用的场景。

  • 对于数据一致性要求不高的场景。

1.3 插件功能

  • Cache插件能够缓存目标服务的结果,允许用户配置缓存结果的失效时间。

1.4 插件代码

  • 核心模块 shenyu-plugin-cache-handler.

  • 核心模块 shenyu-plugin-cache-redis.

  • 核心模块 shenyu-plugin-cache-memory.

  • 核心类 org.apache.shenyu.plugin.cache.CachePlugin

  • 核心类 org.apache.shenyu.plugin.cache.redis.RedisCache

  • 核心类 org.apache.shenyu.plugin.cache.memory.MemoryCache

1.5 添加自哪个shenyu版本

  • 2.4.3

2. 如何使用插件

2.1 插件使用流程图

缓存插件 - 图1

2.2 导入pom

  • ShenYu Bootstrap导入cache插件的依赖。
  1. <!--shenyu cache plugin start-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-plugin-cache</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>
  7. <!--shenyu cache plugin end-->

2.3 启用插件

shenyu-admin —> 基础配置 —> 插件管理 —> Cache 设置为开启。

2.4 配置插件

2.4.1 插件配置

缓存插件 - 图2

  • cacheType: Cache目前支持两种模式缓存数据

  • memory:本地内存模式

  • redis:redis模式

目前默认的是本地内存模式,目标服务的结果都存储在本地内存中,如果网关是通过集群的方式部署的,不建议使用本地内存模式,推荐使用redis模式,目标服务的数据都缓存到redis中。

如果使用的是本地内存模式,只需要在cacheType中选择memory即可,其他配置都不需要配置。

如果使用的是redis模式,在cacheType中选择redis,参数介绍:

  • database:缓存结果存储到哪个数据库中,默认是索引库0。

  • master:默认为master。

  • mode:redis的工作模式,默认为单点模式:standalone,此外还有集群模式:cluster,哨兵模式:sentinel

  • url :配置 redis 数据库的IP和端口,通过冒号连接配置,示例:192.168.1.1:6379

  • password: redis 数据库的密码,如果没有的话,可以不配置。

  • maxldle:连接池中最大空闲连接

  • minldle:连接池中最小空闲连接

  • maxActive:连接池最大连接数

  • maxWait:连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1

2.4.2 选择器配置

2.4.3 规则配置

缓存插件 - 图3

  • 只有匹配的请求,Cache插件才会对目标服务的结果进行缓存。

timeoutSecods,该值为目标服务结果数据缓存时间,默认是60,单位

注意:当前版本的Cache插件是把url作为唯一key,标识同一个请求的。

2.5 示例

2.5.1 使用redis缓存请求结果

2.5.1.1 插件配置

缓存插件 - 图4

选择redis缓存模式,并且配置redis的数据库,url,模式和密码。

2.5.1.2 选择器配置

缓存插件 - 图5

2.5.1.3 规则配置

缓存插件 - 图6

2.5.1.4 发送请求

  • 发送请求并且缓存结果

request

  1. ### shengyu getway proxy orderSave
  2. GET http://localhost:9195/http/order/findById?id=123
  3. Accept: application/json
  4. Content-Type: application/json

2.5.1.5 核验缓存结果

缓存插件 - 图7

缓存插件 - 图8

3. 如何禁用插件

shenyu-admin —> 基础配置 —> 插件管理 —> Cache 设置为关闭。