searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OpenResty中的请求独有数据和跨请求数据

2023-09-19 07:23:02
0
0

在OpenResty当中,不同lua脚本中的数据,有的是每个请求有独立的一份,还有的是整个进程上的所有请求共享的

 

通常情况下,下面所写的,每个请求将会有独立的一份count,因此无论调用此接口多少次,每次都是从0开始的

http {
    server {
        listen 80;
        location / {
            content_by_lua_block {
                local count = 0
                local function inc_count() {
                   count = count + 1
                }
                inc_count()
            }
        }
    }
}

 

而下面的写法,各个请求将会共享count

http {
    server {
        listen 80;
        location / {
            content_by_lua_block {
                local count_module = require "count_module"
                count_module.incr()
            }
        }
    }
}

其中count_module为如下lua脚本

local _M = {
   count = 0
}

function _M.incr()
    self.count = self.count + 1
end

return _M

 

上面两种写法有不同的效果,是因为通过require引入模块,每个进程仅会发生一次,然后后续的请求,都共享这一模块

而直接在content_by_lua*中定义的局部变量,每次都是新的变量

 

除此之外,还可能存在跨进程共享数据的需求,这种情况需要共享内存或者其他进程间通信的方法

0条评论
作者已关闭评论
w****h
2文章数
0粉丝数
w****h
2 文章 | 0 粉丝
w****h
2文章数
0粉丝数
w****h
2 文章 | 0 粉丝
原创

OpenResty中的请求独有数据和跨请求数据

2023-09-19 07:23:02
0
0

在OpenResty当中,不同lua脚本中的数据,有的是每个请求有独立的一份,还有的是整个进程上的所有请求共享的

 

通常情况下,下面所写的,每个请求将会有独立的一份count,因此无论调用此接口多少次,每次都是从0开始的

http {
    server {
        listen 80;
        location / {
            content_by_lua_block {
                local count = 0
                local function inc_count() {
                   count = count + 1
                }
                inc_count()
            }
        }
    }
}

 

而下面的写法,各个请求将会共享count

http {
    server {
        listen 80;
        location / {
            content_by_lua_block {
                local count_module = require "count_module"
                count_module.incr()
            }
        }
    }
}

其中count_module为如下lua脚本

local _M = {
   count = 0
}

function _M.incr()
    self.count = self.count + 1
end

return _M

 

上面两种写法有不同的效果,是因为通过require引入模块,每个进程仅会发生一次,然后后续的请求,都共享这一模块

而直接在content_by_lua*中定义的局部变量,每次都是新的变量

 

除此之外,还可能存在跨进程共享数据的需求,这种情况需要共享内存或者其他进程间通信的方法

文章来自个人专栏
openresty
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0