如何开启结果缓存
一、支持哪些数据源作为结果缓存
数据源 | 支持的数栈版本 | 使用独立源 | 支持高可用 |
---|---|---|---|
redis | 5.0+ | 是 | 是 |
hbase | 4.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,走的是结果缓存,至此缓存就成功使用了
三、结果缓存优缺点
优点
- 减少单次调用的响应时间
- 减小整个系统的负载和减小数据源的负载,提升系统的吞吐量和并发性能
缺点
- 由于无法感知数据源的数据变更,结果缓存存在数据更新延迟的问题
- 更适用于请求入参变化较少的场景,变化较多则会降低缓存的命中率
- 会增加hbase/redis的压力,极端情况下可能导致hbase/redis宕机