UNPKG

ioredis-mock

Version:

This library emulates ioredis by performing all operations in-memory.

812 lines (806 loc) 50.4 kB
## Supported commands ![Commands Coverage: 68%](https://img.shields.io/badge/coverage-68%25-orange.svg) > 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: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | | [hexpire] | :white_check_mark: | :x: | | [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: | | [hpexpire] | :white_check_mark: | :x: | | [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: | :white_check_mark: | | [lmpop] | :white_check_mark: | :white_check_mark: | | [lolwut] | :white_check_mark: | :white_check_mark: | | [lpop] | :white_check_mark: | :white_check_mark: | | [lpos] | :white_check_mark: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | :white_check_mark: | | [wait] | :white_check_mark: | :x: | | [watch] | :white_check_mark: | :white_check_mark: | | [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: | | [xdelex] | :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: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | :white_check_mark: | | [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: | | [_FT.CONFIG] | :x: | :x: | | [_FT.DEBUG] | :x: | :x: | | [_FT.SAFEADD] | :x: | :x: | | [bf.add] | :x: | :x: | | [bf.card] | :x: | :x: | | [bf.debug] | :x: | :x: | | [bf.exists] | :x: | :x: | | [bf.info] | :x: | :x: | | [bf.insert] | :x: | :x: | | [bf.loadchunk] | :x: | :x: | | [bf.madd] | :x: | :x: | | [bf.mexists] | :x: | :x: | | [bf.reserve] | :x: | :x: | | [bf.scandump] | :x: | :x: | | [cf.add] | :x: | :x: | | [cf.addnx] | :x: | :x: | | [cf.compact] | :x: | :x: | | [cf.count] | :x: | :x: | | [cf.debug] | :x: | :x: | | [cf.del] | :x: | :x: | | [cf.exists] | :x: | :x: | | [cf.info] | :x: | :x: | | [cf.insert] | :x: | :x: | | [cf.insertnx] | :x: | :x: | | [cf.loadchunk] | :x: | :x: | | [cf.mexists] | :x: | :x: | | [cf.reserve] | :x: | :x: | | [cf.scandump] | :x: | :x: | | [cms.incrby] | :x: | :x: | | [cms.info] | :x: | :x: | | [cms.initbydim] | :x: | :x: | | [cms.initbyprob] | :x: | :x: | | [cms.merge] | :x: | :x: | | [cms.query] | :x: | :x: | | [FT._ALIASADDIFNX] | :x: | :x: | | [FT._ALIASDELIFX] | :x: | :x: | | [FT._ALTERIFNX] | :x: | :x: | | [FT._CREATEIFNX] | :x: | :x: | | [FT._DROPIFX] | :x: | :x: | | [FT._DROPINDEXIFX] | :x: | :x: | | [FT._LIST] | :x: | :x: | | [FT.ADD] | :x: | :x: | | [FT.AGGREGATE] | :x: | :x: | | [FT.ALIASADD] | :x: | :x: | | [FT.ALIASDEL] | :x: | :x: | | [FT.ALIASUPDATE] | :x: | :x: | | [FT.ALTER] | :x: | :x: | | [FT.CONFIG] | :x: | :x: | | [FT.CREATE] | :x: | :x: | | [FT.CURSOR] | :x: | :x: | | [FT.DEL] | :x: | :x: | | [FT.DICTADD] | :x: | :x: | | [FT.DICTDEL] | :x: | :x: | | [FT.DICTDUMP] | :x: | :x: | | [FT.DROP] | :x: | :x: | | [FT.DROPINDEX] | :x: | :x: | | [FT.EXPLAIN] | :x: | :x: | | [FT.EXPLAINCLI] | :x: | :x: | | [FT.GET] | :x: | :x: | | [FT.INFO] | :x: | :x: | | [FT.MGET] | :x: | :x: | | [FT.PROFILE] | :x: | :x: | | [FT.SEARCH] | :x: | :x: | | [FT.SPELLCHECK] | :x: | :x: | | [FT.SUGADD] | :x: | :x: | | [FT.SUGDEL] | :x: | :x: | | [FT.SUGGET] | :x: | :x: | | [FT.SUGLEN] | :x: | :x: | | [FT.SYNADD] | :x: | :x: | | [FT.SYNDUMP] | :x: | :x: | | [FT.SYNUPDATE] | :x: | :x: | | [FT.TAGVALS] | :x: | :x: | | [hexpireat] | :x: | :x: | | [hexpiretime] | :x: | :x: | | [hgetdel] | :x: | :x: | | [hgetex] | :x: | :x: | | [hpersist] | :x: | :x: | | [hpexpireat] | :x: | :x: | | [hpexpiretime] | :x: | :x: | | [hpttl] | :x: | :x: | | [hsetex] | :x: | :x: | | [httl] | :x: | :x: | | [json.arrappend] | :x: | :x: | | [json.arrindex] | :x: | :x: | | [json.arrinsert] | :x: | :x: | | [json.arrlen] | :x: | :x: | | [json.arrpop] | :x: | :x: | | [json.arrtrim] | :x: | :x: | | [json.clear] | :x: | :x: | | [json.debug] | :x: | :x: | | [json.del] | :x: | :x: | | [json.forget] | :x: | :x: | | [json.get] | :x: | :x: | | [json.merge] | :x: | :x: | | [json.mget] | :x: | :x: | | [json.mset] | :x: | :x: | | [json.numincrby] | :x: | :x: | | [json.nummultby] | :x: | :x: | | [json.numpowby] | :x: | :x: | | [json.objkeys] | :x: | :x: | | [json.objlen] | :x: | :x: | | [json.resp] | :x: | :x: | | [json.set] | :x: | :x: | | [json.strappend] | :x: | :x: | | [json.strlen] | :x: | :x: | | [json.toggle] | :x: | :x: | | [json.type] | :x: | :x: | | [search.CLUSTERINFO] | :x: | :x: | | [search.CLUSTERREFRESH] | :x: | :x: | | [search.CLUSTERSET] | :x: | :x: | | [tdigest.add] | :x: | :x: | | [tdigest.byrank] | :x: | :x: | | [tdigest.byrevrank] | :x: | :x: | | [tdigest.cdf] | :x: | :x: | | [tdigest.create] | :x: | :x: | | [tdigest.info] | :x: | :x: | | [tdigest.max] | :x: | :x: | | [tdigest.merge] | :x: | :x: | | [tdigest.min] | :x: | :x: | | [tdigest.quantile] | :x: | :x: | | [tdigest.rank] | :x: | :x: | | [tdigest.reset] | :x: | :x: | | [tdigest.revrank] | :x: | :x: | | [tdigest.trimmed_mean] | :x: | :x: | | [timeseries.CLUSTERSET] | :x: | :x: | | [timeseries.REFRESHCLUSTER] | :x: | :x: | | [topk.add] | :x: | :x: | | [topk.count] | :x: | :x: | | [topk.incrby] | :x: | :x: | | [topk.info] | :x: | :x: | | [topk.list] | :x: | :x: | | [topk.query] | :x: | :x: | | [topk.reserve] | :x: | :x: | | [ts.add] | :x: | :x: | | [ts.alter] | :x: | :x: | | [ts.create] | :x: | :x: | | [ts.createrule] | :x: | :x: | | [ts.decrby] | :x: | :x: | | [ts.del] | :x: | :x: | | [ts.deleterule] | :x: | :x: | | [ts.get] | :x: | :x: | | [ts.incrby] | :x: | :x: | | [ts.info] | :x: | :x: | | [ts.madd] | :x: | :x: | | [ts.mget] | :x: | :x: | | [ts.mrange] | :x: | :x: | | [ts.mrevrange] | :x: | :x: | | [ts.queryindex] | :x: | :x: | | [ts.range] | :x: | :x: | | [ts.revrange] | :x: | :x: | | [VADD] | :x: | :x: | | [VCARD] | :x: | :x: | | [VDIM] | :x: | :x: | | [VEMB] | :x: | :x: | | [VGETATTR] | :x: | :x: | | [VINFO] | :x: | :x: | | [VISMEMBER] | :x: | :x: | | [VLINKS] | :x: | :x: | | [VRANDMEMBER] | :x: | :x: | | [VREM] | :x: | :x: | | [VSETATTR] | :x: | :x: | | [VSIM] | :x: | :x: | | [waitaof] | :x: | :x: | | [xackdel] | :x: | :x: | ## 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 [hexpire]: http://redis.io/commands/HEXPIRE [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 [hpexpire]: http://redis.io/commands/HPEXPIRE [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 [xdelex]: http://redis.io/commands/XDELEX [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 [_FT.CONFIG]: http://redis.io/commands/_FT.CONFIG [_FT.DEBUG]: http://redis.io/commands/_FT.DEBUG [_FT.SAFEADD]: http://redis.io/commands/_FT.SAFEADD [bf.add]: http://redis.io/commands/BF.ADD [bf.card]: http://redis.io/commands/BF.CARD [bf.debug]: http://redis.io/commands/BF.DEBUG [bf.exists]: http://redis.io/commands/BF.EXISTS [bf.info]: http://redis.io/commands/BF.INFO [bf.insert]: http://redis.io/commands/BF.INSERT [bf.loadchunk]: http://redis.io/commands/BF.LOADCHUNK [bf.madd]: http://redis.io/commands/BF.MADD [bf.mexists]: http://redis.io/commands/BF.MEXISTS [bf.reserve]: http://redis.io/commands/BF.RESERVE [bf.scandump]: http://redis.io/commands/BF.SCANDUMP [cf.add]: http://redis.io/commands/CF.ADD [cf.addnx]: http://redis.io/commands/CF.ADDNX [cf.compact]: http://redis.io/commands/CF.COMPACT [cf.count]: http://redis.io/commands/CF.COUNT [cf.debug]: http://redis.io/commands/CF.DEBUG [cf.del]: http://redis.io/commands/CF.DEL [cf.exists]: http://redis.io/commands/CF.EXISTS [cf.info]: http://redis.io/commands/CF.INFO [cf.insert]: http://redis.io/commands/CF.INSERT [cf.insertnx]: http://redis.io/commands/CF.INSERTNX [cf.loadchunk]: http://redis.io/commands/CF.LOADCHUNK [cf.mexists]: http://redis.io/commands/CF.MEXISTS [cf.reserve]: http://redis.io/commands/CF.RESERVE [cf.scandump]: http://redis.io/commands/CF.SCANDUMP [cms.incrby]: http://redis.io/commands/CMS.INCRBY [cms.info]: http://redis.io/commands/CMS.INFO [cms.initbydim]: http://redis.io/commands/CMS.INITBYDIM [cms.initbyprob]: http://redis.io/commands/CMS.INITBYPROB [cms.merge]: http://redis.io/commands/CMS.MERGE [cms.query]: http://redis.io/commands/CMS.QUERY [FT._ALIASADDIFNX]: http://redis.io/commands/FT._ALIASADDIFNX [FT._ALIASDELIFX]: http://redis.io/commands/FT._ALIASDELIFX [FT._ALTERIFNX]: http://redis.io/commands/FT._ALTERIFNX [FT._CREATEIFNX]: http://redis.io/commands/FT._CREATEIFNX [FT._DROPIFX]: http://redis.io/commands/FT._DROPIFX [FT._DROPINDEXIFX]: http://redis.io/commands/FT._DROPINDEXIFX [FT._LIST]: http://redis.io/commands/FT._LIST [FT.ADD]: http://redis.io/commands/FT.ADD [FT.AGGREGATE]: http://redis.io/commands/FT.AGGREGATE [FT.ALIASADD]: http://redis.io/commands/FT.ALIASADD [FT.ALIASDEL]: http://redis.io/commands/FT.ALIASDEL [FT.ALIASUPDATE]: http://redis.io/commands/FT.ALIASUPDATE [FT.ALTER]: http://redis.io/commands/FT.ALTER [FT.CONFIG]: http://redis.io/commands/FT.CONFIG [FT.CREATE]: http://redis.io/commands/FT.CREATE [FT.CURSOR]: http://redis.io/commands/FT.CURSOR [FT.DEL]: http://redis.io/commands/FT.DEL [FT.DICTADD]: http://redis.io/commands/FT.DICTADD [FT.DICTDEL]: http://redis.io/commands/FT.DICTDEL [FT.DICTDUMP]: http://redis.io/commands/FT.DICTDUMP [FT.DROP]: http://redis.io/commands/FT.DROP [FT.DROPINDEX]: http://redis.io/commands/FT.DROPINDEX [FT.EXPLAIN]: http://redis.io/commands/FT.EXPLAIN [FT.EXPLAINCLI]: http://redis.io/commands/FT.EXPLAINCLI [FT.GET]: http://redis.io/commands/FT.GET [FT.INFO]: http://redis.io/commands/FT.INFO [FT.MGET]: http://redis.io/commands/FT.MGET [FT.PROFILE]: http://redis.io/commands/FT.PROFILE [FT.SEARCH]: http://redis.io/commands/FT.SEARCH [FT.SPELLCHECK]: http://redis.io/commands/FT.SPELLCHECK [FT.SUGADD]: http://redis.io/commands/FT.SUGADD [FT.SUGDEL]: http://redis.io/commands/FT.SUGDEL [FT.SUGGET]: http://redis.io/commands/FT.SUGGET [FT.SUGLEN]: http://redis.io/commands/FT.SUGLEN [FT.SYNADD]: http://redis.io/commands/FT.SYNADD [FT.SYNDUMP]: http://redis.io/commands/FT.SYNDUMP [FT.SYNUPDATE]: http://redis.io/commands/FT.SYNUPDATE [FT.TAGVALS]: http://redis.io/commands/FT.TAGVALS [hexpireat]: http://redis.io/commands/HEXPIREAT [hexpiretime]: http://redis.io/commands/HEXPIRETIME [hgetdel]: http://redis.io/commands/HGETDEL [hgetex]: http://redis.io/commands/HGETEX [hpersist]: http://redis.io/commands/HPERSIST [hpexpireat]: http://redis.io/commands/HPEXPIREAT [hpexpiretime]: http://redis.io/commands/HPEXPIRETIME [hpttl]: http://redis.io/commands/HPTTL [hsetex]: http://redis.io/commands/HSETEX [httl]: http://redis.io/commands/HTTL [json.arrappend]: http://redis.io/commands/JSON.ARRAPPEND [json.arrindex]: http://redis.io/commands/JSON.ARRINDEX [json.arrinsert]: http://redis.io/commands/JSON.ARRINSERT [json.arrlen]: http://redis.io/commands/JSON.ARRLEN [json.arrpop]: http://redis.io/commands/JSON.ARRPOP [json.arrtrim]: http://redis.io/commands/JSON.ARRTRIM [json.clear]: http://redis.io/commands/JSON.CLEAR [json.debug]: http://redis.io/commands/JSON.DEBUG [json.del]: http://redis.io/commands/JSON.DEL [json.forget]: http://redis.io/commands/JSON.FORGET [json.get]: http://redis.io/commands/JSON.GET [json.merge]: http://redis.io/commands/JSON.MERGE [json.mget]: http://redis.io/commands/JSON.MGET [json.mset]: http://redis.io/commands/JSON.MSET [json.numincrby]: http://redis.io/commands/JSON.NUMINCRBY [json.nummultby]: http://redis.io/commands/JSON.NUMMULTBY [json.numpowby]: http://redis.io/commands/JSON.NUMPOWBY [json.objkeys]: http://redis.io/commands/JSON.OBJKEYS [json.objlen]: http://redis.io/commands/JSON.OBJLEN [json.resp]: http://redis.io/commands/JSON.RESP [json.set]: http://redis.io/commands/JSON.SET [json.strappend]: http://redis.io/commands/JSON.STRAPPEND [json.strlen]: http://redis.io/commands/JSON.STRLEN [json.toggle]: http://redis.io/commands/JSON.TOGGLE [json.type]: http://redis.io/commands/JSON.TYPE [search.CLUSTERINFO]: http://redis.io/commands/SEARCH.CLUSTERINFO [search.CLUSTERREFRESH]: http://redis.io/commands/SEARCH.CLUSTERREFRESH [search.CLUSTERSET]: http://redis.io/commands/SEARCH.CLUSTERSET [tdigest.add]: http://redis.io/commands/TDIGEST.ADD [tdigest.byrank]: http://redis.io/commands/TDIGEST.BYRANK [tdigest.byrevrank]: http://redis.io/commands/TDIGEST.BYREVRANK [tdigest.cdf]: http://redis.io/commands/TDIGEST.CDF [tdigest.create]: http://redis.io/commands/TDIGEST.CREATE [tdigest.info]: http://redis.io/commands/TDIGEST.INFO [tdigest.max]: http://redis.io/commands/TDIGEST.MAX [tdigest.merge]: http://redis.io/commands/TDIGEST.MERGE [tdigest.min]: http://redis.io/commands/TDIGEST.MIN [tdigest.quantile]: http://redis.io/commands/TDIGEST.QUANTILE [tdigest.rank]: http://redis.io/commands/TDIGEST.RANK [tdigest.reset]: http://redis.io/commands/TDIGEST.RESET [tdigest.revrank]: http://redis.io/commands/TDIGEST.REVRANK [tdigest.trimmed_mean]: http://redis.io/commands/TDIGEST.TRIMMED_MEAN [timeseries.CLUSTERSET]: http://redis.io/commands/TIMESERIES.CLUSTERSET [timeseries.REFRESHCLUSTER]: http://redis.io/commands/TIMESERIES.REFRESHCLUSTER [topk.add]: http://redis.io/commands/TOPK.ADD [topk.count]: http://redis.io/commands/TOPK.COUNT [topk.incrby]: http://redis.io/commands/TOPK.INCRBY [topk.info]: http://redis.io/commands/TOPK.INFO [topk.list]: http://redis.io/commands/TOPK.LIST [topk.query]: http://redis.io/commands/TOPK.QUERY [topk.reserve]: http://redis.io/commands/TOPK.RESERVE [ts.add]: http://redis.io/commands/TS.ADD [ts.alter]: http://redis.io/commands/TS.ALTER [ts.create]: http://redis.io/commands/TS.CREATE [ts.createrule]: http://redis.io/commands/TS.CREATERULE [ts.decrby]: http://redis.io/commands/TS.DECRBY [ts.del]: http://redis.io/commands/TS.DEL [ts.deleterule]: http://redis.io/commands/TS.DELETERULE [ts.get]: http://redis.io/commands/TS.GET [ts.incrby]: http://redis.io/commands/TS.INCRBY [ts.info]: http://redis.io/commands/TS.INFO [ts.madd]: http://redis.io/commands/TS.MADD [ts.mget]: http://redis.io/commands/TS.MGET [ts.mrange]: http://redis.io/commands/TS.MRANGE [ts.mrevrange]: http://redis.io/commands/TS.MREVRANGE [ts.queryindex]: http://redis.io/commands/TS.QUERYINDEX [ts.range]: http://redis.io/commands/TS.RANGE [ts.revrange]: http://redis.io/commands/TS.REVRANGE [VADD]: http://redis.io/commands/VADD [VCARD]: http://redis.io/commands/VCARD [VDIM]: http://redis.io/commands/VDIM [VEMB]: http://redis.io/commands/VEMB [VGETATTR]: http://redis.io/commands/VGETATTR [VINFO]: http://redis.io/commands/VINFO [VISMEMBER]: http://redis.io/commands/VISMEMBER [VLINKS]: http://redis.io/commands/VLINKS [VRANDMEMBER]: http://redis.io/commands/VRANDMEMBER [VREM]: http://redis.io/commands/VREM [VSETATTR]: http://redis.io/commands/VSETATTR [VSIM]: http://redis.io/commands/VSIM [waitaof]: http://redis.io/commands/WAITAOF [xackdel]: http://redis.io/commands/XACKDEL [debug]: htt