Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mirek/node-redises
Redis client pool.
https://github.com/mirek/node-redises
Last synced: about 1 month ago
JSON representation
Redis client pool.
- Host: GitHub
- URL: https://github.com/mirek/node-redises
- Owner: mirek
- License: mit
- Created: 2014-02-18T15:39:18.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2014-03-02T21:41:47.000Z (almost 11 years ago)
- Last Synced: 2024-10-13T08:52:12.150Z (2 months ago)
- Language: CoffeeScript
- Size: 234 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Summary
Redis client with pool support and drop-in replacement/transparent API.
## Usage
{Redises} = require 'redises'
redises = new Redises
redises.set 'myval', 'foo', (err, resp) ->
console.log err, resp
redises.get 'myval', (err, resp) ->
console.log err, respAnother example:
redis = require 'redis'
{Redises} = require 'redises'# Select db 2
redises = new Redises
client = redis.createClient()
client.select 2, (err, resp) =>
done(client)# Use multi
multi = redises.multi()
multi.set 'multi:test:1', 'foo'
multi.get 'multi:test:1'
multi.exec (err, resp) ->
console.log err, resp
# null [ 'OK', 'foo' ]### Stateless commands
All stateless commands are handled transparently. From library usage point of view all of them will behave as if they were called on redis client:
* `APPEND`
* `BGREWRITEAOF`
* `BGSAVE`
* `BITCOUNT`
* `BITOP`
* `BLPOP`
* `BRPOP`
* `BRPOPLPUSH`
* `CLIENT KILL`
* `CLIENT LIST`
* `CONFIG GET`
* `CONFIG RESETSTAT`
* `CONFIG REWRITE`
* `CONFIG SET`
* `DBSIZE`
* `DEBUG OBJECT`
* `DEBUG SEGFAULT`
* `DECR`
* `DECRBY`
* `DEL`
* `DUMP`
* `ECHO`
* `EVAL`
* `EVALSHA`
* `EXISTS`
* `EXPIRE`
* `EXPIREAT`
* `FLUSHALL`
* `FLUSHDB`
* `GET`
* `GETBIT`
* `GETRANGE`
* `GETSET`
* `HDEL`
* `HEXISTS`
* `HGET`
* `HGETALL`
* `HINCRBY`
* `HINCRBYFLOAT`
* `HKEYS`
* `HLEN`
* `HMGET`
* `HMSET`
* `HSCAN`
* `HSET`
* `HSETNX`
* `HVALS`
* `INCR`
* `INCRBY`
* `INCRBYFLOAT`
* `INFO`
* `KEYS`
* `LASTSAVE`
* `LINDEX`
* `LINSERT`
* `LLEN`
* `LPOP`
* `LPUSH`
* `LPUSHX`
* `LRANGE`
* `LREM`
* `LSET`
* `LTRIM`
* `MGET`
* `MIGRATE`
* `MONITOR`
* `MOVE`
* `MSET`
* `MSETNX`
* `OBJECT`
* `PERSIST`
* `PEXPIRE`
* `PEXPIREAT`
* `PING`
* `PSETEX`
* `PTTL`
* `QUIT`
* `RANDOMKEY`
* `RENAME`
* `RENAMENX`
* `RESTORE`
* `RPOP`
* `RPOPLPUSH`
* `RPUSH`
* `RPUSHX`
* `SADD`
* `SAVE`
* `SCAN`
* `SCARD`
* `SCRIPT EXISTS`
* `SCRIPT FLUSH`
* `SCRIPT KILL`
* `SCRIPT LOAD`
* `SDIFF`
* `SDIFFSTORE`
* `SET`
* `SETBIT`
* `SETEX`
* `SETNX`
* `SETRANGE`
* `SHUTDOWN`
* `SINTER`
* `SINTERSTORE`
* `SISMEMBER`
* `SLAVEOF`
* `SLOWLOG`
* `SMEMBERS`
* `SMOVE`
* `SORT`
* `SPOP`
* `SRANDMEMBER`
* `SREM`
* `SSCAN`
* `STRLEN`
* `SUBSTR`
* `SUNION`
* `SUNIONSTORE`
* `SYNC`
* `TIME`
* `TTL`
* `TYPE`
* `ZADD`
* `ZCARD`
* `ZCOUNT`
* `ZINCRBY`
* `ZINTERSTORE`
* `ZRANGE`
* `ZRANGEBYSCORE`
* `ZRANK`
* `ZREM`
* `ZREMRANGEBYRANK`
* `ZREMRANGEBYSCORE`
* `ZREVRANGE`
* `ZREVRANGEBYSCORE`
* `ZREVRANK`
* `ZSCAN`
* `ZSCORE`
* `ZUNIONSTORE`Please note that `SCRIPT ...` commands give impression of statefull commands, but are in fact client side stateless commands.
### Statefull commands
The following commands hold state on the client side and require special treatment:
* `SELECT` - todo, at the moment you can select db in the factory method.
* `AUTH` - todo, at the moment you can send auth from factory method.
* `CLIENT GETNAME` - supported
* `CLIENT SETNAME` - the only place it makes sense in the context of pool is the factory method, where it's supported.
* `MULTI` - supported
* `EXEC` - supported
* `DISCARD` - supported
* `WATCH` - supported
* `UNWATCH` - supportedI still need to have a look at those commands:
* `SUBSCRIBE` - todo
* `UNSUBSCRIBE` - todo
* `PSUBSCRIBE` - todo
* `PUBLISH` - todo
* `PUBSUB` - todo
* `PUNSUBSCRIBE` - todoYou can invoke any client command or method by dequeuing client from the pool:
redisesClient.dequeue (client) ->
# ... do anything you want on the client and in the last callback you may want to...
redisesClient.enqueue(client)