多级缓存架构(四)Redis缓存
通过本文章,可以完成多级缓存架构中的Redis缓存。
一、Redis服务
在docker/docker-compose.ym
l中,添加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