node_redis
模块,是现在最成熟的node redis驱动,但是在生产环境中使用它仍然会有几个问题。
- 无法连接一个redis集群。进而在
redis
处产生严重的单点问题。 - 没有超时控制。
mredis
是一个在node_redis
基础上封装的一层对多个redis实例进行管理的模块。通过mredis
可以连接多个redis服务器,保证只要有任何一个redis服务仍然存活,依赖于mredis的系统就不会挂掉。
- 支持连接多个redis服务,多写单读(写入的时候更新每一台服务器,读取的时候轮询或者从速度最快的服务器读取)。
- 对管理的redis服务连接进行健康检测。将不正常的redis服务断开。
- 所有redis操作(
get
,set
)都支持超时。 - 保证只要有一个redis服务仍然存活,依赖于mredis的系统就能稳定运行,同时在其他暂时异常的redis服务恢复的时候重新连接。
- mredis的实际使用方法和redis保持完全一致。仅在配置和初始化的时候需要的参数略有不同。
mredis
已经过淘宝各种复杂的断网容灾模拟测试,保持稳定运行。
Install
npm install mredis
如果需要在express
或者connect
中使用mredis
作为session存储的容器, 可以使用connect-mredis
模块: npm install connect-mredis
.
Usage
var mredis = ;//initvar redis = medis; //then use it just like use redis.redis;redis;redis;redis;redis; redis;
Support method
/** * redis get like commands * @type */exportsgetCmds = 'dump' 'exists' 'keys' 'ttl' 'pttl' 'randomkey' 'type' 'get' 'getbit' 'getrange' 'strlen' 'hexists' 'hget' 'hgetall' 'hkeys' 'hlen' 'hmget' 'hvals' 'lindex' 'llen' 'lrange' 'scard' 'sdiff' 'sismember' 'smembers' 'srandmember' 'sunion' 'zcard' 'zcount' 'zrange' 'zrangebyscore' 'zrank' 'zrevrange' 'zrevrangebyscore' 'zrevrank' 'zscore' 'mget' 'exists' 'getbit' 'hget' 'hmget' 'info' 'hgetall'; /** * redis set like commands * @type */exportssetCmds = 'del' 'expire' 'expireat' 'move' 'persist' 'pexpire' 'pexpireat' 'rename' 'renamenx' 'sort' 'append' 'incr' 'decr' 'decrby' 'incrby' 'getset' 'incrbyfloat' 'mset' 'msetnx' 'psetex' 'set' 'setbit' 'setex' 'setnx' 'setrange' 'hdel' 'hincrby' 'hincrbyfloat' 'hmset' 'hset' 'hsetnx' 'blpop' 'brpop' 'brpoplpush' 'linsert' 'lpop' 'lpush' 'lpushx' 'lrem' 'lset' 'ltrim' 'rpop' 'rpoplpush' 'rpushx' 'rpush' 'sadd' 'sdiffstore' 'sinsert' 'smove' 'spop' 'srem' 'sunionstore' 'zadd' 'zincrby' 'zintersotre' 'zunionstore' 'select' 'echo' 'ping' 'quit';
dependence
node-redis