An implementation of REdis Serialization Protocol (RESP).
npm install respjsAn implementation of REdis Serialization Protocol (RESP).
[![NPM version][npm-image]][npm-url]
[![Build Status][travis-image]][travis-url]
[![Downloads][downloads-image]][downloads-url]
- thunk-redis: A redis client with pipelining, rely on thunks, support promise.
- thunk-disque: A thunk/promise-based disque client.
- snapper-core: Teambition push messaging service, backed by redis.
- snapper-producer: Snapper producer client for node.js.
Install with npm
```
npm install respjs
simple redis client (with test):
https://github.com/zensh/resp.js/blob/master/example/redis_client.js
Run:
`sh`
npm run example
`js`
const Resp = require('respjs')
#### new Resp([options])
Resp is a EventEmitter similar to Writable stream. It accept pipelining socket chunks, parse them, produce redis response data. Readable stream can be piped to resp.
- options {Object}bufBulk
- {Boolean} return buffers for bulk reply, default to false
`js`
const resp = new Resp({
bufBulk: true
})
#### resp.write(chunk)
Feed chunk and parse it. resp will emit data event while a integrated data decoded.
#### resp.end([chunk])
Call this method when no more chunk will be written to bufsp, then finish event emit.
#### Event: 'error'
- error {Error}
Emitted when an error occurs.
#### Event: 'data'
- data {Mixed}
Emitted when redis response data produced.
#### Event: 'drain'
Emitted when chunk have been parsed or need more chunks for parsing.
#### Event: 'finish'
The finish event is fired after .end() is called and all chunks have been processed.
Decode RESP's buffer to RESP value.
`js`
Resp.decode(Resp.encodeNull()) // null
Resp.decode(Resp.encodeString('123')) // '123'
Resp.decode(Resp.encodeInteger(123)) // 123
Resp.decode(Resp.encodeBulk(123)) // '123'
Encode a array of value to one RESP buffer. It is usefull to encode a request.
`js
let buf = Resp.encodeRequest(['set', 'key', 123])
//
let str = buf.toString() // *3\r\n$3\r\nset\r\n$3\r\nkey\r\n$3\r\n123\r\n
Resp.encodeRequest(['set', 'key', new Buffer('123')]) // support buffer!
`
Encode RESP's Null value to RESP buffer.
`js`
let buf = Resp.encodeNull() //
let str = buf.toString() // $-1\r\n
Encode RESP's Null Array value to RESP buffer.
`js`
let buf = Resp.encodeNull() //
let str = buf.toString() // *-1\r\n
Encode string to RESP buffer.
`js`
let buf = Resp.encodeString('OK') //
let str = buf.toString() // +OK\r\n
Encode error object to RESP buffer.
`js`
let buf = Resp.encodeError(new Error('error')) //
let str = buf.toString() // -Error error\r\n
Encode integer to RESP buffer.
`js`
let buf = Resp.encodeInteger(123) //
let str = buf.toString() // :123\r\n
Encode RESP's bulk string to RESP buffer.
`js`
let buf = Resp.encodeBulk('message') //
let str = buf.toString() // $7\r\nmessage\r\n
Encode RESP's bulk buffer to RESP buffer.
`js`
let buf = Resp.encodeBufBulk(new Buffer('buf')) //
let str = buf.toString() // $3\r\nbuf\r\n
Encode a array of RESP' value buffer to one RESP buffer.
`js``
let buf = Resp.encodeArray([Resp.encodeNull(), Resp.encodeString('OK')])
//
let str = buf.toString() // *2\r\n$-1\r\n+OK\r\n
MIT © zensh
[npm-url]: https://npmjs.org/package/respjs
[npm-image]: http://img.shields.io/npm/v/respjs.svg
[travis-url]: https://travis-ci.org/zensh/resp.js
[travis-image]: http://img.shields.io/travis/zensh/resp.js.svg
[downloads-url]: https://npmjs.org/package/respjs
[downloads-image]: http://img.shields.io/npm/dm/respjs.svg?style=flat-square