ioredis-mock
Version:
This library emulates ioredis by performing all operations in-memory.
513 lines (504 loc) • 29.1 kB
Markdown
## Supported commands 
> PRs welcome :heart:
| redis | ioredis | ioredis-mock |
| ---------------------- | :----------------: | :----------------: |
| [acl] | :white_check_mark: | :x: |
| [append] | :white_check_mark: | :white_check_mark: |
| [asking] | :white_check_mark: | :white_check_mark: |
| [auth] | :white_check_mark: | :white_check_mark: |
| [bgrewriteaof] | :white_check_mark: | :white_check_mark: |
| [bgsave] | :white_check_mark: | :white_check_mark: |
| [bitcount] | :white_check_mark: | :x: |
| [bitfield] | :white_check_mark: | :x: |
| [bitfield_ro] | :white_check_mark: | :x: |
| [bitop] | :white_check_mark: | :x: |
| [bitpos] | :white_check_mark: | :x: |
| [blmove] | :white_check_mark: | :x: |
| [blmpop] | :white_check_mark: | :x: |
| [blpop] | :white_check_mark: | :x: |
| [brpop] | :white_check_mark: | :x: |
| [brpoplpush] | :white_check_mark: | :white_check_mark: |
| [bzmpop] | :white_check_mark: | :x: |
| [bzpopmax] | :white_check_mark: | :x: |
| [bzpopmin] | :white_check_mark: | :x: |
| [client] | :white_check_mark: | :x: |
| [cluster] | :white_check_mark: | :white_check_mark: |
| [command] | :white_check_mark: | :white_check_mark: |
| [config] | :white_check_mark: | :white_check_mark: |
| [copy] | :white_check_mark: | :x: |
| [dbsize] | :white_check_mark: | :white_check_mark: |
| [decr] | :white_check_mark: | :white_check_mark: |
| [decrby] | :white_check_mark: | :white_check_mark: |
| [del] | :white_check_mark: | :white_check_mark: |
| [discard] | :white_check_mark: | :white_check_mark: |
| [echo] | :white_check_mark: | :white_check_mark: |
| [eval] | :white_check_mark: | :white_check_mark: |
| [eval_ro] | :white_check_mark: | :x: |
| [evalsha] | :white_check_mark: | :white_check_mark: |
| [evalsha_ro] | :white_check_mark: | :x: |
| [exists] | :white_check_mark: | :white_check_mark: |
| [expire] | :white_check_mark: | :white_check_mark: |
| [expireat] | :white_check_mark: | :white_check_mark: |
| [expiretime] | :white_check_mark: | :x: |
| [failover] | :white_check_mark: | :white_check_mark: |
| [fcall] | :white_check_mark: | :x: |
| [fcall_ro] | :white_check_mark: | :x: |
| [flushall] | :white_check_mark: | :white_check_mark: |
| [flushdb] | :white_check_mark: | :white_check_mark: |
| [function] | :white_check_mark: | :x: |
| [geoadd] | :white_check_mark: | :x: |
| [geodist] | :white_check_mark: | :x: |
| [geohash] | :white_check_mark: | :x: |
| [geopos] | :white_check_mark: | :x: |
| [georadius] | :white_check_mark: | :x: |
| [georadius_ro] | :white_check_mark: | :x: |
| [georadiusbymember] | :white_check_mark: | :x: |
| [georadiusbymember_ro] | :white_check_mark: | :x: |
| [geosearch] | :white_check_mark: | :x: |
| [geosearchstore] | :white_check_mark: | :x: |
| [get] | :white_check_mark: | :white_check_mark: |
| [getbit] | :white_check_mark: | :white_check_mark: |
| [getdel] | :white_check_mark: | :white_check_mark: |
| [getex] | :white_check_mark: | :white_check_mark: |
| [getrange] | :white_check_mark: | :white_check_mark: |
| [getset] | :white_check_mark: | :white_check_mark: |
| [hdel] | :white_check_mark: | :white_check_mark: |
| [hexists] | :white_check_mark: | :white_check_mark: |
| [hget] | :white_check_mark: | :white_check_mark: |
| [hgetall] | :white_check_mark: | :white_check_mark: |
| [hincrby] | :white_check_mark: | :white_check_mark: |
| [hincrbyfloat] | :white_check_mark: | :white_check_mark: |
| [hkeys] | :white_check_mark: | :white_check_mark: |
| [hlen] | :white_check_mark: | :white_check_mark: |
| [hmget] | :white_check_mark: | :white_check_mark: |
| [hmset] | :white_check_mark: | :white_check_mark: |
| [hrandfield] | :white_check_mark: | :white_check_mark: |
| [hscan] | :white_check_mark: | :white_check_mark: |
| [hset] | :white_check_mark: | :white_check_mark: |
| [hsetnx] | :white_check_mark: | :white_check_mark: |
| [hstrlen] | :white_check_mark: | :white_check_mark: |
| [hvals] | :white_check_mark: | :white_check_mark: |
| [incr] | :white_check_mark: | :white_check_mark: |
| [incrby] | :white_check_mark: | :white_check_mark: |
| [incrbyfloat] | :white_check_mark: | :white_check_mark: |
| [info] | :white_check_mark: | :white_check_mark: |
| [keys] | :white_check_mark: | :white_check_mark: |
| [lastsave] | :white_check_mark: | :white_check_mark: |
| [lcs] | :white_check_mark: | :x: |
| [lindex] | :white_check_mark: | :white_check_mark: |
| [linsert] | :white_check_mark: | :white_check_mark: |
| [llen] | :white_check_mark: | :white_check_mark: |
| [lmove] | :white_check_mark: | :x: |
| [lmpop] | :white_check_mark: | :x: |
| [lolwut] | :white_check_mark: | :white_check_mark: |
| [lpop] | :white_check_mark: | :white_check_mark: |
| [lpos] | :white_check_mark: | :x: |
| [lpush] | :white_check_mark: | :white_check_mark: |
| [lpushx] | :white_check_mark: | :white_check_mark: |
| [lrange] | :white_check_mark: | :white_check_mark: |
| [lrem] | :white_check_mark: | :white_check_mark: |
| [lset] | :white_check_mark: | :white_check_mark: |
| [ltrim] | :white_check_mark: | :white_check_mark: |
| [mget] | :white_check_mark: | :white_check_mark: |
| [monitor] | :white_check_mark: | :x: |
| [move] | :white_check_mark: | :x: |
| [mset] | :white_check_mark: | :white_check_mark: |
| [msetnx] | :white_check_mark: | :white_check_mark: |
| [object] | :white_check_mark: | :white_check_mark: |
| [persist] | :white_check_mark: | :white_check_mark: |
| [pexpire] | :white_check_mark: | :white_check_mark: |
| [pexpireat] | :white_check_mark: | :white_check_mark: |
| [pexpiretime] | :white_check_mark: | :x: |
| [pfadd] | :white_check_mark: | :x: |
| [pfcount] | :white_check_mark: | :x: |
| [pfmerge] | :white_check_mark: | :x: |
| [ping] | :white_check_mark: | :white_check_mark: |
| [psetex] | :white_check_mark: | :white_check_mark: |
| [psubscribe] | :white_check_mark: | :white_check_mark: |
| [psync] | :white_check_mark: | :x: |
| [pttl] | :white_check_mark: | :white_check_mark: |
| [publish] | :white_check_mark: | :white_check_mark: |
| [pubsub] | :white_check_mark: | :x: |
| [punsubscribe] | :white_check_mark: | :white_check_mark: |
| [quit] | :white_check_mark: | :white_check_mark: |
| [randomkey] | :white_check_mark: | :white_check_mark: |
| [readonly] | :white_check_mark: | :white_check_mark: |
| [readwrite] | :white_check_mark: | :white_check_mark: |
| [rename] | :white_check_mark: | :white_check_mark: |
| [renamenx] | :white_check_mark: | :white_check_mark: |
| [replconf] | :white_check_mark: | :white_check_mark: |
| [replicaof] | :white_check_mark: | :white_check_mark: |
| [reset] | :white_check_mark: | :x: |
| [role] | :white_check_mark: | :white_check_mark: |
| [rpop] | :white_check_mark: | :white_check_mark: |
| [rpoplpush] | :white_check_mark: | :white_check_mark: |
| [rpush] | :white_check_mark: | :white_check_mark: |
| [rpushx] | :white_check_mark: | :white_check_mark: |
| [sadd] | :white_check_mark: | :white_check_mark: |
| [save] | :white_check_mark: | :white_check_mark: |
| [scan] | :white_check_mark: | :white_check_mark: |
| [scard] | :white_check_mark: | :white_check_mark: |
| [script] | :white_check_mark: | :x: |
| [sdiff] | :white_check_mark: | :white_check_mark: |
| [sdiffstore] | :white_check_mark: | :white_check_mark: |
| [select] | :white_check_mark: | :x: |
| [set] | :white_check_mark: | :white_check_mark: |
| [setbit] | :white_check_mark: | :white_check_mark: |
| [setex] | :white_check_mark: | :white_check_mark: |
| [setnx] | :white_check_mark: | :white_check_mark: |
| [setrange] | :white_check_mark: | :white_check_mark: |
| [shutdown] | :white_check_mark: | :x: |
| [sinter] | :white_check_mark: | :white_check_mark: |
| [sintercard] | :white_check_mark: | :x: |
| [sinterstore] | :white_check_mark: | :white_check_mark: |
| [sismember] | :white_check_mark: | :white_check_mark: |
| [slaveof] | :white_check_mark: | :white_check_mark: |
| [smembers] | :white_check_mark: | :white_check_mark: |
| [smismember] | :white_check_mark: | :white_check_mark: |
| [smove] | :white_check_mark: | :white_check_mark: |
| [sort] | :white_check_mark: | :x: |
| [sort_ro] | :white_check_mark: | :x: |
| [spop] | :white_check_mark: | :white_check_mark: |
| [spublish] | :white_check_mark: | :x: |
| [srandmember] | :white_check_mark: | :white_check_mark: |
| [srem] | :white_check_mark: | :white_check_mark: |
| [sscan] | :white_check_mark: | :white_check_mark: |
| [ssubscribe] | :white_check_mark: | :x: |
| [strlen] | :white_check_mark: | :white_check_mark: |
| [subscribe] | :white_check_mark: | :white_check_mark: |
| [substr] | :white_check_mark: | :white_check_mark: |
| [sunion] | :white_check_mark: | :white_check_mark: |
| [sunionstore] | :white_check_mark: | :white_check_mark: |
| [sunsubscribe] | :white_check_mark: | :x: |
| [swapdb] | :white_check_mark: | :x: |
| [sync] | :white_check_mark: | :x: |
| [time] | :white_check_mark: | :white_check_mark: |
| [touch] | :white_check_mark: | :x: |
| [ttl] | :white_check_mark: | :white_check_mark: |
| [type] | :white_check_mark: | :white_check_mark: |
| [unlink] | :white_check_mark: | :white_check_mark: |
| [unsubscribe] | :white_check_mark: | :white_check_mark: |
| [unwatch] | :white_check_mark: | :x: |
| [wait] | :white_check_mark: | :x: |
| [watch] | :white_check_mark: | :x: |
| [xack] | :white_check_mark: | :x: |
| [xadd] | :white_check_mark: | :white_check_mark: |
| [xautoclaim] | :white_check_mark: | :x: |
| [xclaim] | :white_check_mark: | :x: |
| [xdel] | :white_check_mark: | :x: |
| [xgroup] | :white_check_mark: | :x: |
| [xinfo] | :white_check_mark: | :x: |
| [xlen] | :white_check_mark: | :white_check_mark: |
| [xpending] | :white_check_mark: | :x: |
| [xrange] | :white_check_mark: | :white_check_mark: |
| [xread] | :white_check_mark: | :white_check_mark: |
| [xreadgroup] | :white_check_mark: | :x: |
| [xrevrange] | :white_check_mark: | :white_check_mark: |
| [xsetid] | :white_check_mark: | :x: |
| [xtrim] | :white_check_mark: | :x: |
| [zadd] | :white_check_mark: | :white_check_mark: |
| [zcard] | :white_check_mark: | :white_check_mark: |
| [zcount] | :white_check_mark: | :white_check_mark: |
| [zdiff] | :white_check_mark: | :x: |
| [zdiffstore] | :white_check_mark: | :x: |
| [zincrby] | :white_check_mark: | :white_check_mark: |
| [zinter] | :white_check_mark: | :x: |
| [zintercard] | :white_check_mark: | :x: |
| [zinterstore] | :white_check_mark: | :white_check_mark: |
| [zlexcount] | :white_check_mark: | :x: |
| [zmpop] | :white_check_mark: | :x: |
| [zmscore] | :white_check_mark: | :x: |
| [zpopmax] | :white_check_mark: | :white_check_mark: |
| [zpopmin] | :white_check_mark: | :white_check_mark: |
| [zrandmember] | :white_check_mark: | :x: |
| [zrange] | :white_check_mark: | :white_check_mark: |
| [zrangebylex] | :white_check_mark: | :x: |
| [zrangebyscore] | :white_check_mark: | :white_check_mark: |
| [zrangestore] | :white_check_mark: | :x: |
| [zrank] | :white_check_mark: | :white_check_mark: |
| [zrem] | :white_check_mark: | :white_check_mark: |
| [zremrangebylex] | :white_check_mark: | :x: |
| [zremrangebyrank] | :white_check_mark: | :white_check_mark: |
| [zremrangebyscore] | :white_check_mark: | :white_check_mark: |
| [zrevrange] | :white_check_mark: | :white_check_mark: |
| [zrevrangebylex] | :white_check_mark: | :x: |
| [zrevrangebyscore] | :white_check_mark: | :white_check_mark: |
| [zrevrank] | :white_check_mark: | :white_check_mark: |
| [zscan] | :white_check_mark: | :white_check_mark: |
| [zscore] | :white_check_mark: | :white_check_mark: |
| [zunion] | :white_check_mark: | :x: |
| [zunionstore] | :white_check_mark: | :x: |
## Missing buffer commands
- [hscanBuffer][1]
- [scanBuffer][1]
- [sscanBuffer][1]
- [subscribeBuffer][1]
- [xaddBuffer][1]
- [xrangeBuffer][1]
- [xreadBuffer][1]
- [xrevrangeBuffer][1]
- [zcardBuffer][1]
- [zincrbyBuffer][1]
- [zpopmaxBuffer][1]
- [zpopminBuffer][1]
- [zrangeBuffer][1]
- [zrangebyscoreBuffer][1]
- [zrankBuffer][1]
- [zremrangebyrankBuffer][1]
- [zremrangebyscoreBuffer][1]
- [zrevrangeBuffer][1]
- [zrevrangebyscoreBuffer][1]
- [zrevrankBuffer][1]
- [zscanBuffer][1]
- [zscoreBuffer][1]
## Commands that won't be implemented
> This is just the current status, and may change in the future. If you have ideas on how to implement any of them feel free to tell us about it.
| redis | why it doesn't make sense to emulate |
| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [debug] | This command is intended to aid in debugging redis |
| [dump] | Doesn't make sense to implement the internal data format used by RDB |
| [hello] | THe protocols this command is switching between (RESP2, RESP3, Redis 6) aren't in use |
| [latency] | ioredis-mock isn't operating over the network so there is no latency to monitor |
| [memory] | It's unlikely this can be emulated in a JS environment |
| [migrate] | This command actually executes a DUMP + DEL on the source instance, and a RESTORE in the target. Since DUMP and RESTORE won't be implemented it includes MIGRATE. |
| [module] | It's unlikely that we'll be able to run Redis Modules in a JS VM |
| [pfdebug] | This command is intended to aid in debugging redis |
| [restore] | The RDB specific format used for restores would be a massive undertaking to implement with very little gain. |
| [slowlog] | Useful when you're on redis, not so much when on ioredis-mock |
[1]: https://github.com/luin/ioredis#handle-binary-data
[acl]: http://redis.io/commands/ACL
[append]: http://redis.io/commands/APPEND
[asking]: http://redis.io/commands/ASKING
[auth]: http://redis.io/commands/AUTH
[bgrewriteaof]: http://redis.io/commands/BGREWRITEAOF
[bgsave]: http://redis.io/commands/BGSAVE
[bitcount]: http://redis.io/commands/BITCOUNT
[bitfield]: http://redis.io/commands/BITFIELD
[bitfield_ro]: http://redis.io/commands/BITFIELD_RO
[bitop]: http://redis.io/commands/BITOP
[bitpos]: http://redis.io/commands/BITPOS
[blmove]: http://redis.io/commands/BLMOVE
[blmpop]: http://redis.io/commands/BLMPOP
[blpop]: http://redis.io/commands/BLPOP
[brpop]: http://redis.io/commands/BRPOP
[brpoplpush]: http://redis.io/commands/BRPOPLPUSH
[bzmpop]: http://redis.io/commands/BZMPOP
[bzpopmax]: http://redis.io/commands/BZPOPMAX
[bzpopmin]: http://redis.io/commands/BZPOPMIN
[client]: http://redis.io/commands/CLIENT
[cluster]: http://redis.io/commands/CLUSTER
[command]: http://redis.io/commands/COMMAND
[config]: http://redis.io/commands/CONFIG
[copy]: http://redis.io/commands/COPY
[dbsize]: http://redis.io/commands/DBSIZE
[decr]: http://redis.io/commands/DECR
[decrby]: http://redis.io/commands/DECRBY
[del]: http://redis.io/commands/DEL
[discard]: http://redis.io/commands/DISCARD
[echo]: http://redis.io/commands/ECHO
[eval]: http://redis.io/commands/EVAL
[eval_ro]: http://redis.io/commands/EVAL_RO
[evalsha]: http://redis.io/commands/EVALSHA
[evalsha_ro]: http://redis.io/commands/EVALSHA_RO
[exists]: http://redis.io/commands/EXISTS
[expire]: http://redis.io/commands/EXPIRE
[expireat]: http://redis.io/commands/EXPIREAT
[expiretime]: http://redis.io/commands/EXPIRETIME
[failover]: http://redis.io/commands/FAILOVER
[fcall]: http://redis.io/commands/FCALL
[fcall_ro]: http://redis.io/commands/FCALL_RO
[flushall]: http://redis.io/commands/FLUSHALL
[flushdb]: http://redis.io/commands/FLUSHDB
[function]: http://redis.io/commands/FUNCTION
[geoadd]: http://redis.io/commands/GEOADD
[geodist]: http://redis.io/commands/GEODIST
[geohash]: http://redis.io/commands/GEOHASH
[geopos]: http://redis.io/commands/GEOPOS
[georadius]: http://redis.io/commands/GEORADIUS
[georadius_ro]: http://redis.io/commands/GEORADIUS_RO
[georadiusbymember]: http://redis.io/commands/GEORADIUSBYMEMBER
[georadiusbymember_ro]: http://redis.io/commands/GEORADIUSBYMEMBER_RO
[geosearch]: http://redis.io/commands/GEOSEARCH
[geosearchstore]: http://redis.io/commands/GEOSEARCHSTORE
[get]: http://redis.io/commands/GET
[getbit]: http://redis.io/commands/GETBIT
[getdel]: http://redis.io/commands/GETDEL
[getex]: http://redis.io/commands/GETEX
[getrange]: http://redis.io/commands/GETRANGE
[getset]: http://redis.io/commands/GETSET
[hdel]: http://redis.io/commands/HDEL
[hexists]: http://redis.io/commands/HEXISTS
[hget]: http://redis.io/commands/HGET
[hgetall]: http://redis.io/commands/HGETALL
[hincrby]: http://redis.io/commands/HINCRBY
[hincrbyfloat]: http://redis.io/commands/HINCRBYFLOAT
[hkeys]: http://redis.io/commands/HKEYS
[hlen]: http://redis.io/commands/HLEN
[hmget]: http://redis.io/commands/HMGET
[hmset]: http://redis.io/commands/HMSET
[hrandfield]: http://redis.io/commands/HRANDFIELD
[hscan]: http://redis.io/commands/HSCAN
[hset]: http://redis.io/commands/HSET
[hsetnx]: http://redis.io/commands/HSETNX
[hstrlen]: http://redis.io/commands/HSTRLEN
[hvals]: http://redis.io/commands/HVALS
[incr]: http://redis.io/commands/INCR
[incrby]: http://redis.io/commands/INCRBY
[incrbyfloat]: http://redis.io/commands/INCRBYFLOAT
[info]: http://redis.io/commands/INFO
[keys]: http://redis.io/commands/KEYS
[lastsave]: http://redis.io/commands/LASTSAVE
[lcs]: http://redis.io/commands/LCS
[lindex]: http://redis.io/commands/LINDEX
[linsert]: http://redis.io/commands/LINSERT
[llen]: http://redis.io/commands/LLEN
[lmove]: http://redis.io/commands/LMOVE
[lmpop]: http://redis.io/commands/LMPOP
[lolwut]: http://redis.io/commands/LOLWUT
[lpop]: http://redis.io/commands/LPOP
[lpos]: http://redis.io/commands/LPOS
[lpush]: http://redis.io/commands/LPUSH
[lpushx]: http://redis.io/commands/LPUSHX
[lrange]: http://redis.io/commands/LRANGE
[lrem]: http://redis.io/commands/LREM
[lset]: http://redis.io/commands/LSET
[ltrim]: http://redis.io/commands/LTRIM
[mget]: http://redis.io/commands/MGET
[monitor]: http://redis.io/commands/MONITOR
[move]: http://redis.io/commands/MOVE
[mset]: http://redis.io/commands/MSET
[msetnx]: http://redis.io/commands/MSETNX
[object]: http://redis.io/commands/OBJECT
[persist]: http://redis.io/commands/PERSIST
[pexpire]: http://redis.io/commands/PEXPIRE
[pexpireat]: http://redis.io/commands/PEXPIREAT
[pexpiretime]: http://redis.io/commands/PEXPIRETIME
[pfadd]: http://redis.io/commands/PFADD
[pfcount]: http://redis.io/commands/PFCOUNT
[pfmerge]: http://redis.io/commands/PFMERGE
[ping]: http://redis.io/commands/PING
[psetex]: http://redis.io/commands/PSETEX
[psubscribe]: http://redis.io/commands/PSUBSCRIBE
[psync]: http://redis.io/commands/PSYNC
[pttl]: http://redis.io/commands/PTTL
[publish]: http://redis.io/commands/PUBLISH
[pubsub]: http://redis.io/commands/PUBSUB
[punsubscribe]: http://redis.io/commands/PUNSUBSCRIBE
[quit]: http://redis.io/commands/QUIT
[randomkey]: http://redis.io/commands/RANDOMKEY
[readonly]: http://redis.io/commands/READONLY
[readwrite]: http://redis.io/commands/READWRITE
[rename]: http://redis.io/commands/RENAME
[renamenx]: http://redis.io/commands/RENAMENX
[replconf]: http://redis.io/commands/REPLCONF
[replicaof]: http://redis.io/commands/REPLICAOF
[reset]: http://redis.io/commands/RESET
[role]: http://redis.io/commands/ROLE
[rpop]: http://redis.io/commands/RPOP
[rpoplpush]: http://redis.io/commands/RPOPLPUSH
[rpush]: http://redis.io/commands/RPUSH
[rpushx]: http://redis.io/commands/RPUSHX
[sadd]: http://redis.io/commands/SADD
[save]: http://redis.io/commands/SAVE
[scan]: http://redis.io/commands/SCAN
[scard]: http://redis.io/commands/SCARD
[script]: http://redis.io/commands/SCRIPT
[sdiff]: http://redis.io/commands/SDIFF
[sdiffstore]: http://redis.io/commands/SDIFFSTORE
[select]: http://redis.io/commands/SELECT
[set]: http://redis.io/commands/SET
[setbit]: http://redis.io/commands/SETBIT
[setex]: http://redis.io/commands/SETEX
[setnx]: http://redis.io/commands/SETNX
[setrange]: http://redis.io/commands/SETRANGE
[shutdown]: http://redis.io/commands/SHUTDOWN
[sinter]: http://redis.io/commands/SINTER
[sintercard]: http://redis.io/commands/SINTERCARD
[sinterstore]: http://redis.io/commands/SINTERSTORE
[sismember]: http://redis.io/commands/SISMEMBER
[slaveof]: http://redis.io/commands/SLAVEOF
[smembers]: http://redis.io/commands/SMEMBERS
[smismember]: http://redis.io/commands/SMISMEMBER
[smove]: http://redis.io/commands/SMOVE
[sort]: http://redis.io/commands/SORT
[sort_ro]: http://redis.io/commands/SORT_RO
[spop]: http://redis.io/commands/SPOP
[spublish]: http://redis.io/commands/SPUBLISH
[srandmember]: http://redis.io/commands/SRANDMEMBER
[srem]: http://redis.io/commands/SREM
[sscan]: http://redis.io/commands/SSCAN
[ssubscribe]: http://redis.io/commands/SSUBSCRIBE
[strlen]: http://redis.io/commands/STRLEN
[subscribe]: http://redis.io/commands/SUBSCRIBE
[substr]: http://redis.io/commands/SUBSTR
[sunion]: http://redis.io/commands/SUNION
[sunionstore]: http://redis.io/commands/SUNIONSTORE
[sunsubscribe]: http://redis.io/commands/SUNSUBSCRIBE
[swapdb]: http://redis.io/commands/SWAPDB
[sync]: http://redis.io/commands/SYNC
[time]: http://redis.io/commands/TIME
[touch]: http://redis.io/commands/TOUCH
[ttl]: http://redis.io/commands/TTL
[type]: http://redis.io/commands/TYPE
[unlink]: http://redis.io/commands/UNLINK
[unsubscribe]: http://redis.io/commands/UNSUBSCRIBE
[unwatch]: http://redis.io/commands/UNWATCH
[wait]: http://redis.io/commands/WAIT
[watch]: http://redis.io/commands/WATCH
[xack]: http://redis.io/commands/XACK
[xadd]: http://redis.io/commands/XADD
[xautoclaim]: http://redis.io/commands/XAUTOCLAIM
[xclaim]: http://redis.io/commands/XCLAIM
[xdel]: http://redis.io/commands/XDEL
[xgroup]: http://redis.io/commands/XGROUP
[xinfo]: http://redis.io/commands/XINFO
[xlen]: http://redis.io/commands/XLEN
[xpending]: http://redis.io/commands/XPENDING
[xrange]: http://redis.io/commands/XRANGE
[xread]: http://redis.io/commands/XREAD
[xreadgroup]: http://redis.io/commands/XREADGROUP
[xrevrange]: http://redis.io/commands/XREVRANGE
[xsetid]: http://redis.io/commands/XSETID
[xtrim]: http://redis.io/commands/XTRIM
[zadd]: http://redis.io/commands/ZADD
[zcard]: http://redis.io/commands/ZCARD
[zcount]: http://redis.io/commands/ZCOUNT
[zdiff]: http://redis.io/commands/ZDIFF
[zdiffstore]: http://redis.io/commands/ZDIFFSTORE
[zincrby]: http://redis.io/commands/ZINCRBY
[zinter]: http://redis.io/commands/ZINTER
[zintercard]: http://redis.io/commands/ZINTERCARD
[zinterstore]: http://redis.io/commands/ZINTERSTORE
[zlexcount]: http://redis.io/commands/ZLEXCOUNT
[zmpop]: http://redis.io/commands/ZMPOP
[zmscore]: http://redis.io/commands/ZMSCORE
[zpopmax]: http://redis.io/commands/ZPOPMAX
[zpopmin]: http://redis.io/commands/ZPOPMIN
[zrandmember]: http://redis.io/commands/ZRANDMEMBER
[zrange]: http://redis.io/commands/ZRANGE
[zrangebylex]: http://redis.io/commands/ZRANGEBYLEX
[zrangebyscore]: http://redis.io/commands/ZRANGEBYSCORE
[zrangestore]: http://redis.io/commands/ZRANGESTORE
[zrank]: http://redis.io/commands/ZRANK
[zrem]: http://redis.io/commands/ZREM
[zremrangebylex]: http://redis.io/commands/ZREMRANGEBYLEX
[zremrangebyrank]: http://redis.io/commands/ZREMRANGEBYRANK
[zremrangebyscore]: http://redis.io/commands/ZREMRANGEBYSCORE
[zrevrange]: http://redis.io/commands/ZREVRANGE
[zrevrangebylex]: http://redis.io/commands/ZREVRANGEBYLEX
[zrevrangebyscore]: http://redis.io/commands/ZREVRANGEBYSCORE
[zrevrank]: http://redis.io/commands/ZREVRANK
[zscan]: http://redis.io/commands/ZSCAN
[zscore]: http://redis.io/commands/ZSCORE
[zunion]: http://redis.io/commands/ZUNION
[zunionstore]: http://redis.io/commands/ZUNIONSTORE
[debug]: http://redis.io/commands/DEBUG
[dump]: http://redis.io/commands/DUMP
[hello]: http://redis.io/commands/HELLO
[latency]: http://redis.io/commands/LATENCY
[memory]: http://redis.io/commands/MEMORY
[migrate]: http://redis.io/commands/MIGRATE
[module]: http://redis.io/commands/MODULE
[pfdebug]: http://redis.io/commands/PFDEBUG
[restore]: http://redis.io/commands/RESTORE
[slowlog]: http://redis.io/commands/SLOWLOG