# 056. 基于 nginx + lua + java 完成多级缓存架构的核心业务逻辑(三)
前面章节已经测试通了流程,但是漏掉了一个核心:没有检测 nginx 本地缓存是否有效
这里来多次访问:http://eshop-cache03/product?method=product&productId=1&shopId=1
,
并观察后台打印日志信息
2019-05-07 21:37:24.009 INFO 5792 --- [nio-6002-exec-1] c.m.c.e.c.controller.CacheController : 从 redis 中获取商品信息
2019-05-07 21:37:24.275 INFO 5792 --- [nio-6002-exec-3] c.m.c.e.c.controller.CacheController : 从 redis 中获取店铺信息
1
2
2
第一次访问的时候,nginx 本地缓存没有,会去 redis 中获取,后面多次访问的时候, 就会走 nginx 本地缓存了,过期时间设置的是 10 分钟
来回顾下流程:
缓存数据生产
有数据变更则主动更新两级缓存(ehcache + redis)
通过缓存维度化拆分,来达到细粒度和小影响更新缓存
分发层 ngix + 应用层 nginx
自定义流量分发策略,提高缓存命中
nginx shared dice 缓存 -> redis 和 ehcache,
渲染 htm 模板并返回客户端
但是还差一个关键的要点,当前面的三级缓存失效(nginx、redis、ehcache)时, 就需要缓存服务重新拉取数据,去更新到 redis 和 ehcache 中。
这个关键点涉及到分布式缓存重建并发冲突问题