Skip to content

soveran/resp

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

RESP

Lightweight RESP client

Description

Lightweight RESP client that can be used for interacting with Redis servers.

Usage

local resp = require("resp")
local client = resp.new("localhost", 6379)

assert("OK" == client:call("SET", "foo", "42"))
assert("42" == client:call("GET", "foo"))

Pipelining

You can pipeline commands by using the queue/commit methods.

local resp = require("resp")
local client = resp.new("localhost", 6379)

client:queue("ECHO", "foo")
client:queue("ECHO", "bar")

assert_equal(#client.buff, 2)

result = client:commit()

assert_equal(#client.buff, 0)

assert_equal(result[1], "foo")
assert_equal(result[2], "bar")

MONITOR and SUBSCRIBE

For commands like MONITOR and SUBSCRIBE, you can keep reading messages from the server:

local resp = require("resp")
local c1 = resp.new("localhost", 6379)
local c2 = resp.new("localhost", 6379)

-- Subscribe to channel "foo"
c1:call("SUBSCRIBE", "foo")

-- Publish to channel "foo"
c2:call("PUBLISH", "foo", "hello")
c2:call("PUBLISH", "foo", "world")

r1 = c1:read()
r2 = c1:read()

-- Messages have type, channel and content
assert_equal(r1[1], "message")
assert_equal(r1[2], "foo")
assert_equal(r1[3], "hello")

assert_equal(r2[1], "message")
assert_equal(r2[2], "foo")
assert_equal(r2[3], "world")

Encoding

Aside from creating a client, resp.lua can also be used to encode any message with the RESP protocol:

local resp = require("resp")

assert_equal("*1\r\n$3\r\nFOO\r\n\r\n", resp.encode("FOO"))

Installation

You need to have lsocket installed, then just copy resp.lua anywhere in your package.path.

About

Lightweight RESP client for Lua

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages