lua-resty-couchbase
使用cosocket纯lua实现的couchbase的client,已经在爱奇艺重要的播放服务稳定运行5年多,线上支持峰值QPS达到20W,在OpenResty架构下面,可以直接从nginx上面访问CouchBase.
开源地址:https://github.com/iqiyi/lua-resty-couchbase
一个例子
lua_package_path "/path/to/lua-resty-couchbase/lib/?.lua;;";
lua_shared_dict ldict 10m;
server {
location /test {
content_by_lua_block {
local cjson = require "cjson"
local couchbase = require "resty.couchbase"
local function get_from_service()
-- nothing
return "{}"
end
local conf = {
hosts = { "10.10.10.1:8091", "10.10.10.2:8091"},
bucket_name = "test",
bucketpwd = "test-password",
}
local client, err = couchbase:create_client(conf.hosts, conf.bucket_name, conf.bucketpwd)
if client == nil then
ngx.log(ngx.ERR, err)
end
-- test set_timeout
client:set_timeout(500)
local key = "test-key"
local key1 = "test-key1"
-- test set
client:set(key, "{}")
client:set(key1, "{}")
-- test get_bluk
local values, err = client:get_bluk(key, key1)
if not err then
ngx.say(cjson.encode(values))
end
-- test n1ql
local result, err = client:query('SELECT country FROM `travel-sample` WHERE name = "Excel Airways";')
if not err then
ngx.say(result)
end
-- test get get_from_replica
local value, err = client:get(key)
if value then
ngx.say(value)
else
if err then
if string.find(err, "Not found") then
ngx.log(ngx.INFO, "key not found: ", key, " error: ", err)
ngx.say(get_from_service())
else
local value_bak, err_bak = client:get_from_replica(key)
if value_bak then
ngx.log(ngx.WARN, "get key from replica success: ", key)
ngx.say(value_bak)
else
ngx.log(ngx.ERR, "get replica error: ", key, "error: ", err_bak)
ngx.say(get_from_service())
end
end
end
end
-- test close
client:close()
}
}
}
关于OpenResty
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
相关推荐
而lua-resty-template和大多数模板引擎是类似的,大体内容有: 模板位置:从哪里查找模板; 变量输出/转义:变量值输出; 代码片段:执行代码片段,完成如if/else、for等复杂逻辑,调用对象函数/方法; 注释:解释...
《lua-resty-mongol在OpenResty中的应用与集成》 lua-resty-mongol是基于OpenResty的一个lua库,专为处理MongoDB连接和操作而设计。标题"lua-resty-mongol-master已编译"表明我们已经获取到lua-resty-mongol的最新...
《lua-resty-redis-connector:Lua在OpenResty中的Redis连接器详解》 在现代Web服务开发中,Lua作为一种轻量级脚本语言,因其高效、简洁的特性被广泛应用于服务器端。OpenResty是基于Nginx的高性能Web平台,它集成...
lua-resty-core, 新的基于 lua Nginx 模块的API 电子邮件名称lua-resty-core - 用于ngx_http_lua_module和/或者ngx_stream_lua_module的基于new的Lua table-内容名称状态概要说明描述先决条件API实现了r
lua-resty-limit-traffic, 在 openresty/ngx_lua中,用于限制和控制流量的Lua库 电子邮件名称lua-resty-limit-traffic - 用于限制和控制 openresty/ngx_lua中流量的Lua库目录名称状态概要说明描述安装工具社区服务...
这表明压缩包包含的是“lua-resty-mongol”的主分支代码,通常在开源项目中,“master”分支代表项目的主线开发,包含了最新的稳定版本。解压后,用户可以找到源代码、文档、示例等资源,以便于学习和使用lua-resty-...
lua-resty-shell, 用于OpenResty应用服务器的微型子进程/shell 库 简介当你需要执行子进程( 或者 shell 命令) 时,这个小型库是用于与OpenResty应用程序一起使用的。 除了 non completely完全不阻塞外,即使是完全不...
lua-resty-validation, 用于Lua和OpenResty的验证库( 输入验证和筛选) lua-resty-validationlua-resty-validation 是用于Lua和OpenResty的可以扩展链接验证和过滤库。带lua-resty-validation的 Hello Worldlocal val
lua-resty-nettle, LuaJIT FFI的绑定( 低级加密库) lua-resty-nettle针对荨麻疹( 低级别加密库)的LuaJIT FFI绑定概要local require = requirelocal print = printlocal gsub = string.g
lua-resty-websocket, 对ngx_lua模块( 和 OpenResty )的web socket支持 电子邮件名称lua-resty-websocket - ngx_lua模块的Lua web socket实现 table-内容名称状态描述概要说明模块resty.websocket.server方法新插件...
lua-resty-consul, 库与ngx_lua中的consul接口的接口 lua-resty-consul库与ngx_lua中的consul接口的接口目录概述依赖项方法新插件 。get_decodedget_json_decoded把了删除get_client_body_reader
lua-resty-lrucache, 在 LuaJIT FFI上,基于Lua缓存 电子邮件名称lua-resty-lrucache - 基于 LuaJIT FFI的land缓存目录NAME状态概要说明描述方法新插件设置 。删除先决条件安装工具待办事项社区服务英文邮件列表中文...
lua-resty-test, 在Openresty上,基于ngx_lua的测试框架 电子邮件名称基于Openresty的lua-resty-test Ngx_lua测试框架#Description 这里Lua库是测试ngx_lua源或者它的他服务器( tcp或者 udp )的测试框架:...
《深入理解Lua-resty-redis库的安装与应用》 Lua-resty-redis是一个基于OpenResty(一个扩展了Nginx的Web平台)的Lua库,它为开发者提供了与Redis数据库进行交互的能力。在现代Web开发中,Redis作为内存数据存储...
**lua-resty-waf简介** `lua-resty-waf`是一个高效的Web应用防火墙(WAF),它构建在OpenResty平台上,利用Lua语言的强大功能为Nginx提供动态的安全策略执行。OpenResty集成了Nginx与LuaJIT,使得我们可以编写高...
lua-resty-socket cosocket / LuaSocket自动兼容模块,用于希望与纯Lua或OpenResty的init上下文兼容的lua-resty模块。 该库的用例是:您正在开发依赖于cosocket的lua-resty模块,但是您希望它也可以在OpenResty的...
安装过程通常包括克隆仓库(如lua-resty-post-master)、将源代码添加到OpenResty的Lua路径中,然后在Nginx配置文件中引用。安装完成后,开发者可以利用其提供的API来构造请求,例如设置URL、HTTP头、请求体等参数。...
`lua-resty-redis-connector` 是一个针对 `lua-resty-redis` 库的扩展模块,主要用于在 OpenResty(一个基于 Nginx 的高性能 Web 平台,集成了 LuaJIT)环境中提供更高效的 Redis 连接管理。这个库帮助开发者在处理...