Openresty(二十)ngx.shared共享内存操作

一    lua_shared_dict 指令

重点: 'restart'会清空,'reload'不会清空

①  解读

细节点: '字典名'一定要'见名知意',大小取决于'应用'场景

Openresty(二十)ngx.shared共享内存操作_第1张图片

  二    ngx.shared.DICT

重点:share_dict 就像一个'精简版'的 redis 

思考:过期的key,一定会删除吗? -->不会,'看算法'

重点:DICT带指'开辟的共享内存空间的名字'

 (1)   概述

①  支持的方法

Openresty(二十)ngx.shared共享内存操作_第2张图片

(2)SDK方法细讲

①   get

Openresty(二十)ngx.shared共享内存操作_第3张图片

Openresty(二十)ngx.shared共享内存操作_第4张图片

②    get_stable

Openresty(二十)ngx.shared共享内存操作_第5张图片

③    set

备注:字典里面'存'的是什么'数值' --> 'key value'

细节点:set '大 key'的时候

业务场景:存什么'值'? 如何解析?

Openresty(二十)ngx.shared共享内存操作_第6张图片

④    safe_set

细节点: 体会'safe'的体现

⑤    add  safe_add  replace

Openresty(二十)ngx.shared共享内存操作_第7张图片

⑥    delete 

⑦    incr

Openresty(二十)ngx.shared共享内存操作_第8张图片

说明: 只能应用'数字(digital)'

Openresty(二十)ngx.shared共享内存操作_第9张图片

⑧    lpush  rpush  lpop  rpop  llen 

说明: '队列'操作

Openresty(二十)ngx.shared共享内存操作_第10张图片

⑨    ttl  expire  flush_all  flush_expired  get_keys  capacity  free_space

Openresty(二十)ngx.shared共享内存操作_第11张图片

(3)案例讲解

①  nginx.conf相关配置

Openresty(二十)ngx.shared共享内存操作_第12张图片

细节点: require "resty.core" 可以'注释'

Openresty(二十)ngx.shared共享内存操作_第13张图片

②    测试结果

Openresty(二十)ngx.shared共享内存操作_第14张图片

说明: 本来应该是'[status=true,err=nil,forcible=false]',但是由于add是'多次'执行

(4)后续和redis结合补充

(1)nginx内存 -->redis缓存 --> mysql持久化

应用场景:跟redis结合

我们把lua代码放在nginx配置中会随着lua的代码的增加导致配置文件太长不好维护,因此我们应该把lua代码移到外部文件中存储

几种方法:APISX、etcd、consul、kong、zookeeper -->动态能力

①②③④⑤⑥⑦⑧⑨⑩

你可能感兴趣的:(openresty)