# 080. 在流量分发+后端应用双层 nginx 中加入接收热点缓存数据的接口

# 分发层接收热点缓存逻辑

添加 hot 接口映射

vi /usr/hello/hello.conf

server {
    listen       80;
    server_name  _;
    location /lua {
      default_type 'text/html';
      content_by_lua_file /usr/hello/lua/hello.lua;
    }

    location /product {
      default_type 'text/html';
      content_by_lua_file /usr/hello/lua/distribute.lua;
    }
    # 建立接口映射
    location /hot {
      default_type 'text/html';
      content_by_lua_file /usr/hello/lua/hot.lua;
    }                                               
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

编写缓存逻辑 /usr/hello/lua/hot.lua

local uri_args = ngx.req.get_uri_args()
local product_id = uri_args["productId"]

local cache_ngx = ngx.shared.my_cache
local hot_product_cache_key = "hot_product_"..product_id
-- 存入缓存,时间可以设置长一点,1 小时
cache_ngx:set(hot_product_cache_key,"true",60 * 60)
1
2
3
4
5
6
7

# 应用层接收热点缓存逻辑

应用层都是一样的,也需要先建立接口映射,这里就不贴了

编写缓存逻辑 /usr/hello/lua/hot.lua

local uri_args = ngx.req.get_uri_args()
local product_id = uri_args["productId"]
local product_info = uri_args["productInfo"]

local product_cache_key = "product_info_"..product_id

local cache_ngx = ngx.shared.my_cache

cache_ngx:set(product_cache_key,product_info,60 * 60)
1
2
3
4
5
6
7
8
9

TIP

product_info 发送的时候,编码的,这里不知道不解码是否有问题