微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Luajit IO Lua 的 IO 框架

程序名称:Luajit IO

授权协议: BSD

操作系统: 跨平台

开发语言: Lua

Luajit 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
    -- end
end

return test_redis

Luajit IO 官网

http://luajit.io/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐