Lua 的 IO 框架 Luajit IO

BSD
Lua
跨平台
2015-04-17
红薯

Luajit IO 是一个纯 Lua 的 IO 框架,提供 C 的高效率,简单但强大的设计,得益于 luajit 这个 JIT 引擎。可用来开发 TCP/UDP 服务器程序。

下面是连接 redis 的示例代码:

local ffi = require"ffi"
local null = ffi.new("void*")
local redis = require "resty.redis"

local function test_redis(req, rsp)
	local red = redis:new()

	-- red:set_timeout(1000) -- 1 sec

	-- or connect to a unix domain socket file listened
	-- by a redis server:
	--     local ok, err = red:connect("unix:/path/to/redis.sock")

	local ok, err = red:connect("127.0.0.1", 6379)
	if not ok then
		rsp:say("failed to connect: ", err)
		return
	end

	ok, err = red:set("dog", "an animal")
	if not ok then
		rsp:say("failed to set dog: ", err)
		return
	end

	rsp:say("set result: ", ok)

	local res, err = red:get("dog")
	if not res then
		rsp:say("failed to get dog: ", err)
		return
	end

	if res == null then
		rsp:say("dog not found.")
		return
	end

	rsp:say("dog: ", res)

	red:init_pipeline()
	red:set("cat", "Marry")
	red:set("horse", "Bob")
	red:get("cat")
	red:get("horse")
	local results, err = red:commit_pipeline()
	if not results then
		rsp:say("failed to commit the pipelined requests: ", err)
		return
	end

	for i, res in ipairs(results) do
		if type(res) == "table" then
			if not res[1] then
				rsp:say("failed to run command ", i, ": ", res[2])
			else
				-- process the table value
			end
		else
			-- process the scalar value
		end
	end

	-- put it into the connection pool of size 100,
	-- with 10 seconds max idle time
	local ok, err = red:set_keepalive(10000, 100)
	if not ok then
		rsp:say("failed to set keepalive: ", err)
		return
	end

	-- or just close the connection right away:
	-- local ok, err = red:close()
	-- if not ok then
	--     rsp:say("failed to close: ", err)
	--     return
	-- end
end

return test_redis
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录

网上关于 LuaJIT 的讨论,已经显得有些陈旧。如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章。此文章针对尝试在 iOS 或 Andr...

2018/07/11 03:02
164
0
安转luajit 和 cjson模块

###安装luajit 从[luajit](http://luajit.org/download.html)下载源码,make && make install 顺利安装 缺省路径安装在/usr/local/ export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/u...

2014/12/14 09:43
402
0
Building openresty1.7.10.1 with luajit on windows

Building openresty1.7.10.1 with luajit on windows using Cygwin, 在windows下用Cygwin下编译带Luajit的openresty 2013-11-27 15:39 815人阅读 评论(0) 收藏 举报 (heeroz原创 )First i...

2015/06/03 20:20
86
0
使用nlv进行web开发 —— 第一篇:安装Tengine+LuaJIT

nlv框架适用于高性能或嵌入式web系统,也适合前后端分离

2013/12/04 15:24
1K
1
ubuntu+nginx+lua自动安装脚本

ubuntu+nginx+lua自动安装脚本

2018/05/11 15:43
24
0
nginx-lua

1)install luajit wget http://luajit.org/download/LuaJIT-2.0.0.tar.gz tar zxf LuaJIT-2.0.0.tar.gz cd LuaJIT-2.0.0 make make install export LUAJIT_LIB=/usr/local/lib export LUAJIT...

2013/04/02 17:37
68
0
【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

编译 Luajit 库,的确是一个挑战。因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了。以前只是编译了适用于真机的 Luajit 库。最近在尝试编译模拟器 Luajit 库,就顺便梳理了...

2018/07/19 09:51
21
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部