多级缓存架构(四)Redis缓存
通过本文章,可以完成多级缓存架构中的Redis缓存。
一、Redis服务
在docker/docker-compose.yml中,添加redis服务块
1 | redis: |
二、Redis缓存预热
在spirngboot项目启动时,将固定的热点数据提前加载到redis中。
1. 引入依赖
pom.xml添加如下依赖
1 | <dependency> |
application.yml添加如下配置
1 | spring: |
2. handler类实现
新建config.RedisHandler类,内容如下,主要是重写afterPropertiesSet,完成缓存预热逻辑,saveItem和deleteItemById函数给之后的章节使用。
1 | @Component |
三、整合Redis缓存
改进openresty的docker/openresty1/lualib/common.lua,如下
1 | local redis = require('resty.redis') |
item.lua不需要用改动。
四、运行
到此为止,docker-compose.yml内容应该如下
1 | version: '3.8' |
删除原来的multiCache,重新启动各项服务。
1 | docker-compose -p multi-cache up -d |
启动springboot程序。
五、测试
1. redis缓存预热
springboot程序启动后,出现查询日志,查看redis数据库发现自动存入了数据。
2. redis缓存命中
清空openresty容器日志,访问http://localhost:8080/item.html?id=10001,查看日志,发现两次commonUtils.read_data都只触发到查询redis,没到查询tomcat。
1 | 2024-01-12 16:06:18 2024/01/12 08:06:18 [error] 7#7: *1 [lua] common.lua:59: read_data(): local cache miss, try redis, key: item:id:10001, client: 172.30.3.3, server: localhost, request: "GET /api/item/10001 HTTP/1.0", host: "nginx-cluster", referrer: "http://localhost:8080/item.html?id=10001" |
查看springboot程序日志,也没有查询记录,说明redis缓存命中成功。
六、高可用集群
对于redis高可用集群,可以参考以下专栏文章。
https://blog.csdn.net/m0_51390969/category_12546314.html?spm=1001.2014.3001.5482

