API原理概念篇(三)worker间的通信法宝

一  worker间的通信法宝

重点: 最重要的'数据结构'之'shared dict'

①  引入

②  数据共享的方式

ngx.ctx和ngx.var区别​​​​​​​

ngx.var.VARIABLE 

1) 第一种是 'nginx' 中的'变量'

备注: 了解'特点'

ngx.ctx

2) 第二种是'ngx.ctx'  --> "重点"

特点:可以在'同一个请求'的'不同阶段之间'共享数据

补充: 'ngx.ctx'的'注意'事项

纠正: '正确'

local ngx = ngx

local function bar()
   ngx.ctx.host = 'test.com'
end

3) 第'三种'方法是使用'模块'级别的变量

特点:在同一个 'worker 内'的所有'请求'之间'共享'数据

补充1: 方法'3' 案例'1'讲解

补充2: 方法'3' 案例'2' race condition讲解  --> 'yield操作'

  

ngx.shared.DICT

4) 第'四种'用 'shared dict' 来'共享'数据

特点: 这些数据可以在'多个 worker 之间'共享

③  共享字典概述

Lua shared dict API 

④  Shared Dict分类

shared dict 的 API分类: 可以分为下面'三个'大类:

1) 字典'读写'类

2) '队列'操作类

  

3) '管理'类

⑤  答疑解惑

1) 实际的'开发'中,我们经常会用到'多级'缓存

2) OpenResty 的'官方'项目中也有'对缓存的封装'

3) 你能找出来是'哪几个项目'吗? 或者你知道一些'其他缓存封装'的 lua-resty 库吗?

思考: `yield`有可能'导致race'?

遗留: 哪些API'比如ngx.sleep'或哪些操作 '比如访问redis'会yield? 相关'参考'文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值