# 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
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
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
2
3
4
5
6
7
8
9
TIP
product_info 发送的时候,编码的,这里不知道不解码是否有问题