• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

agladysh/lua-hiredis: Bindings for hiredis Redis-client library

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

agladysh/lua-hiredis

开源软件地址(OpenSource Url):

https://github.com/agladysh/lua-hiredis

开源编程语言(OpenSource Language):

C 91.9%

开源软件介绍(OpenSource Introduction):

lua-hiredis — Bindings for hiredis Redis-client library

See the copyright information in the file named COPYRIGHT.

Status of the project

The lua-hiredis module is pretty stable. It is heavily used in production under high load by the author and team. There are still some things to do (see TODO file) in the feature completeness field, this is why the module is not 1.0 yet. But all the features necessary for regular usage are here.

API

  • hiredis.connect(host / socket : string, port : number / nil) : conn / nil, err, error_code

    • hiredis.connect("localhost", 6379) connects to Redis at localhost:6379 via TCP/IP socket.
    • hiredis.connect("/var/run/redis/redis.sock") connects to Redis at /var/run/redis/redis.sock via Unix domain socket.
  • hiredis.unwrap_reply(reply) : reply / name, hiredis.REPLY_STATUS / nil, err

    • If reply is a hiredis.REPLY_ERROR object, returns nil, reply.name.
    • If reply is a hiredis.REPLY_STATUS object, returns reply.name, hiredis.REPLY_STATUS (It is guaranteed that reply.name is not nil or false.)
    • Returns reply itself otherwise (note that hiredis.REPLY_NIL object is not unwrapped).

Connection

  • conn:command(... : string) : reply / nil, err, error_code

  • conn:append_command(... : string) : (nothing)

  • conn:get_reply() : reply / nil, err, error_code

  • conn:close() : (nothing)

Error-code

Hiredis error codes (see docs), also available as hiredis.ERR_<something>:

  • REDIS_ERR_IO is hiredis.ERR_IO,
  • REDIS_ERR_EOF is hiredis.ERR_EOF,
  • REDIS_ERR_PROTOCOL is hiredis.ERR_PROTOCOL,
  • REDIS_ERR_OTHER is hiredis.ERR_OTHER.

Reply

  • REDIS_REPLY_STATUS is a const-object (see below) with type hiredis.REPLY_STATUS. Common status objects are available in hiredis module table:

    • hiredis.status.OK
    • hiredis.status.QUEUED
    • hiredis.status.PONG

    It is guaranteed that these object instances are always used for their corresponding statuses (so you can make a simple equality check). The same is true for any other object in hiredis.status table.

    Examples:

      assert(conn:command("PING") == hiredis.status.PONG)
      assert(conn:command("SET", "NAME", "lua-hiredis") == hiredis.status.OK)
      assert(conn:command("TYPE", "NAME") == hiredis.status.string)
    
  • REDIS_REPLY_ERROR is a const-object with type hiredis.REPLY_ERROR. Note that Redis server errors are returned as REDIS_REPLY_ERROR values, not as nil, err, error_code triplet. See tests for example.

  • REDIS_REPLY_INTEGER is a Lua number.

  • REDIS_REPLY_NIL is a const-object with type hiredis.REPLY_NIL.

  • REDIS_REPLY_STRING is a binary-safe Lua string.

  • REDIS_REPLY_ARRAY is a linear Lua table (nesting is supported).

Const-object

Const-object is a table with fields name and type.

There are three types of const-objects:

  • hiredis.REPLY_NIL (only a single instance is ever used: hiredis.NIL)
  • hiredis.REPLY_ERROR
  • hiredis.REPLY_STATUS

Use hiredis.unwrap_reply() to convert const-object to regular Lua value.

Note: Unwrapping is not done automatically to make array reply handling more straightforward.

Deprecated features

For backwards compatibility following status const-objects are aliased in the hiredis module table:

  • hiredis.OK = hiredis.status.OK
  • hiredis.QUEUED = hiredis.status.QUEUED
  • hiredis.PONG = hiredis.status.PONG

These aliases will eventually be removed in one of future releases, so, please, update your code to use hiredis.status.* instead.

More information

Read test/test.lua for examples. Read hiredis README for API motivation.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap