Skip to main content

如何开启结果缓存

一、支持哪些数据源作为结果缓存

数据源支持的数栈版本使用独立源支持高可用
redis5.0+
hbase4.2+

二、缓存开启步骤

配置文件位于应用安装目录下的 /conf/application.properties文件,配置修改完成后需要重启应用服务

(1)api-web服务配置文件配置

# 结果缓存全局开关

cache.enable = true

(2)gateway服务配置文件配置

# 结果缓存全局开关

cache.enable=true

# 缓存数据库类型,true:redis, false:hbase(cache.enable=true再配置此项)

redis.cache.enable=true

# 结果缓存是否启用第二套redis配置

redis.result.cache.enable=true



# redis缓存连接信息,下面列举了主机模式、哨兵模式和集群模式的样例

# 作用:用户业务缓存,redisson分布式锁,也可选择是否用于api结果缓存

spring.redis.port = 30967

spring.redis.database = 2

spring.redis.pass = XdVyOxV50S7MA8qMfYJJFwzHpmz0qTeiObElsfOYVcQsqjUGZEZyRW+lI76vZ/BIuHb66ac3YmAvFWJD8NOPkcWcJGdMJJK+XgVs9iIVe8NP+7hmXLR7Ah5mgI5lYqbIKQ8D82TiA5D5WuU203wUqdUARGt8s8gwLXGimoIOJjg=

spring.redis.host = 172.16.82.108



#spring.redis.cluster.nodes=172.16.10.50:7001,172.16.10.50:7002,172.16.10.105:7001,172.16.10.105:7002,172.16.10.181:7001,172.16.10.181:7002

#spring.redis.pass=DT@Stack#123

#spring.redis.encrypt=false



# 专门用于api结果缓存的redis配置

spring.redis.result.cluster.nodes=172.16.10.50:7001,172.16.10.50:7002,172.16.10.105:7001,172.16.10.105:7002,172.16.10.181:7001,172.16.10.181:7002

spring.redis.result.pass=DT@Stack#123

spring.redis.result.encrypt=false



#spring.redis.result.database=2

#spring.redis.result.sentinel.nodes=172.16.101.246:26379

#spring.redis.result.pass=DT@Stack#123

#spring.redis.result.encrypt=false

#spring.redis.result.masterName=redis_master

(3)开启单个api的缓存

刷新数栈数据服务页面,清除前端缓存,编辑要开启结果缓存的api,可配置缓存的失效周期,最小时间单位为5分钟。可参考下图,保存后提交发布即可

缓存图片

(4)验证是否已开启并使用缓存

需要注意结果缓存仅作用于正式api的调用,页面测试和测试调用均不生效。

使用postman进行两次完全相同的调用,第二次观察返回信息中的jdbcQuerySpace是否为0,为0则代表此次查询未走jdbc,走的是结果缓存,至此缓存就成功使用了

postman返回信息

三、结果缓存优缺点

优点

  • 减少单次调用的响应时间
  • 减小整个系统的负载和减小数据源的负载,提升系统的吞吐量和并发性能

缺点

  • 由于无法感知数据源的数据变更,结果缓存存在数据更新延迟的问题
  • 更适用于请求入参变化较少的场景,变化较多则会降低缓存的命中率
  • 会增加hbase/redis的压力,极端情况下可能导致hbase/redis宕机