Luajit IO- Lua 的 IO 框架

网友投稿 844 2022-10-17

Luajit IO- Lua 的 IO 框架

Luajit IO- Lua 的 IO 框架

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 -- endendreturn test_redis

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis批量插入并返回主键id的方法
下一篇:I/O的阻塞、非阻塞、同步和异步
相关文章

 发表评论

暂时没有评论,来抢沙发吧~