/**
* Static argument syntax hints for common Redis commands.
* Format: command name (uppercase) → syntax string
*/
export default {
// Strings
SET: 'key value [EX seconds | PX ms | EXAT unix-sec | PXAT unix-ms | KEEPTTL] [NX | XX] [GET]',
GET: 'key',
MSET: 'key value [key value ...]',
MGET: 'key [key ...]',
SETNX: 'key value',
SETEX: 'key seconds value',
PSETEX: 'key milliseconds value',
GETSET: 'key value',
GETDEL: 'key',
GETEX: 'key [EX seconds | PX ms | EXAT unix-sec | PXAT unix-ms | PERSIST]',
GETRANGE: 'key start end',
SETRANGE: 'key offset value',
APPEND: 'key value',
STRLEN: 'key',
INCR: 'key',
INCRBY: 'key increment',
INCRBYFLOAT: 'key increment',
DECR: 'key',
DECRBY: 'key decrement',
MSETNX: 'key value [key value ...]',
LCS: 'key1 key2 [LEN] [IDX] [MINMATCHLEN min] [WITHMATCHLEN]',
SUBSTR: 'key start end',
// Hash
HSET: 'key field value [field value ...]',
HGET: 'key field',
HMSET: 'key field value [field value ...]',
HMGET: 'key field [field ...]',
HGETALL: 'key',
HDEL: 'key field [field ...]',
HEXISTS: 'key field',
HINCRBY: 'key field increment',
HINCRBYFLOAT: 'key field increment',
HKEYS: 'key',
HVALS: 'key',
HLEN: 'key',
HSETNX: 'key field value',
HRANDFIELD: 'key [count [WITHVALUES]]',
HSCAN: 'key cursor [MATCH pattern] [COUNT count]',
// List
LPUSH: 'key element [element ...]',
RPUSH: 'key element [element ...]',
LPOP: 'key [count]',
RPOP: 'key [count]',
LLEN: 'key',
LRANGE: 'key start stop',
LINDEX: 'key index',
LSET: 'key index element',
LINSERT: 'key BEFORE|AFTER pivot element',
LREM: 'key count element',
LTRIM: 'key start stop',
LPOS: 'key element [RANK rank] [COUNT count] [MAXLEN len]',
LMOVE: 'source destination LEFT|RIGHT LEFT|RIGHT',
BLPOP: 'key [key ...] timeout',
BRPOP: 'key [key ...] timeout',
BLMOVE: 'source destination LEFT|RIGHT LEFT|RIGHT timeout',
RPOPLPUSH: 'source destination',
BRPOPLPUSH: 'source destination timeout',
LPUSHX: 'key element [element ...]',
RPUSHX: 'key element [element ...]',
LMPOP: 'numkeys key [key ...] LEFT|RIGHT [COUNT count]',
BLMPOP: 'timeout numkeys key [key ...] LEFT|RIGHT [COUNT count]',
// Set
SADD: 'key member [member ...]',
SREM: 'key member [member ...]',
SMEMBERS: 'key',
SISMEMBER: 'key member',
SMISMEMBER: 'key member [member ...]',
SCARD: 'key',
SPOP: 'key [count]',
SRANDMEMBER: 'key [count]',
SINTER: 'key [key ...]',
SUNION: 'key [key ...]',
SDIFF: 'key [key ...]',
SINTERSTORE: 'destination key [key ...]',
SUNIONSTORE: 'destination key [key ...]',
SDIFFSTORE: 'destination key [key ...]',
SMOVE: 'source destination member',
SINTERCARD: 'numkeys key [key ...] [LIMIT limit]',
SSCAN: 'key cursor [MATCH pattern] [COUNT count]',
// Sorted Set
ZADD: 'key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]',
ZREM: 'key member [member ...]',
ZSCORE: 'key member',
ZMSCORE: 'key member [member ...]',
ZRANK: 'key member [WITHSCORE]',
ZREVRANK: 'key member [WITHSCORE]',
ZRANGE: 'key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]',
ZRANGEBYSCORE: 'key min max [WITHSCORES] [LIMIT offset count]',
ZREVRANGEBYSCORE: 'key max min [WITHSCORES] [LIMIT offset count]',
ZRANGEBYLEX: 'key min max [LIMIT offset count]',
ZREVRANGEBYLEX: 'key max min [LIMIT offset count]',
ZRANGESTORE: 'dst src min max [BYSCORE|BYLEX] [REV] [LIMIT offset count]',
ZCARD: 'key',
ZCOUNT: 'key min max',
ZLEXCOUNT: 'key min max',
ZINCRBY: 'key increment member',
ZINTERSTORE: 'destination numkeys key [key ...] [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX]',
ZUNIONSTORE: 'destination numkeys key [key ...] [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX]',
ZDIFFSTORE: 'destination numkeys key [key ...]',
ZINTER: 'numkeys key [key ...] [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]',
ZUNION: 'numkeys key [key ...] [WEIGHTS weight ...] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]',
ZDIFF: 'numkeys key [key ...] [WITHSCORES]',
ZRANDMEMBER: 'key [count [WITHSCORES]]',
ZPOPMIN: 'key [count]',
ZPOPMAX: 'key [count]',
BZPOPMIN: 'key [key ...] timeout',
BZPOPMAX: 'key [key ...] timeout',
ZMPOP: 'numkeys key [key ...] MIN|MAX [COUNT count]',
BZMPOP: 'timeout numkeys key [key ...] MIN|MAX [COUNT count]',
ZSCAN: 'key cursor [MATCH pattern] [COUNT count]',
// Key
DEL: 'key [key ...]',
UNLINK: 'key [key ...]',
EXISTS: 'key [key ...]',
EXPIRE: 'key seconds [NX|XX|GT|LT]',
PEXPIRE: 'key milliseconds [NX|XX|GT|LT]',
EXPIREAT: 'key unix-time-seconds [NX|XX|GT|LT]',
PEXPIREAT: 'key unix-time-milliseconds [NX|XX|GT|LT]',
PERSIST: 'key',
TTL: 'key',
PTTL: 'key',
EXPIRETIME: 'key',
PEXPIRETIME: 'key',
TYPE: 'key',
RENAME: 'key newkey',
RENAMENX: 'key newkey',
KEYS: 'pattern',
SCAN: 'cursor [MATCH pattern] [COUNT count] [TYPE type]',
RANDOMKEY: '',
DUMP: 'key',
RESTORE: 'key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]',
COPY: 'source destination [DB destination-db] [REPLACE]',
MOVE: 'key db',
OBJECT: 'ENCODING|FREQ|HELP|IDLETIME|REFCOUNT key',
SORT: 'key [BY pattern] [LIMIT offset count] [GET pattern ...] [ASC|DESC] [ALPHA] [STORE destination]',
SORT_RO: 'key [BY pattern] [LIMIT offset count] [GET pattern ...] [ASC|DESC] [ALPHA]',
TOUCH: 'key [key ...]',
WAIT: 'numreplicas timeout',
WAITAOF: 'numlocal numreplicas timeout',
// Stream
XADD: 'key [NOMKSTREAM] [MAXLEN|MINID [=|~] threshold [LIMIT count]] *|id field value [field value ...]',
XREAD: '[COUNT count] [BLOCK ms] STREAMS key [key ...] id [id ...]',
XREADGROUP: 'GROUP group consumer [COUNT count] [BLOCK ms] [NOACK] STREAMS key [key ...] id [id ...]',
XRANGE: 'key start end [COUNT count]',
XREVRANGE: 'key end start [COUNT count]',
XLEN: 'key',
XINFO: 'CONSUMERS|GROUPS|STREAM key [FULL [COUNT count]]',
XACK: 'key group id [id ...]',
XCLAIM: 'key group consumer min-idle-time id [id ...] [IDLE ms] [TIME ms] [RETRYCOUNT count] [FORCE] [JUSTID] [LASTID id]',
XAUTOCLAIM: 'key group consumer min-idle-time start [COUNT count] [JUSTID]',
XDEL: 'key id [id ...]',
XTRIM: 'key MAXLEN|MINID [=|~] threshold [LIMIT count]',
XGROUP: 'CREATE|CREATECONSUMER|DELCONSUMER|DESTROY|SETID key group [id|$] [MKSTREAM] [ENTRIESREAD entries-read]',
XPENDING: 'key group [[IDLE min-idle-time] start end count [consumer]]',
XSETID: 'key last-id [ENTRIESREAD entries-read]',
// Server
INFO: '[section ...]',
DBSIZE: '',
FLUSHDB: '[ASYNC|SYNC]',
FLUSHALL: '[ASYNC|SYNC]',
SELECT: 'index',
PING: '[message]',
ECHO: 'message',
QUIT: '',
CONFIG: 'GET|SET|RESETSTAT|REWRITE parameter [value]',
SLOWLOG: 'GET|LEN|RESET [count]',
CLIENT: 'GETNAME|ID|INFO|KILL|LIST|NO-EVICT|PAUSE|REPLY|SETNAME|UNPAUSE|NO-TOUCH ...',
MEMORY: 'DOCTOR|HELP|MALLOC-STATS|PURGE|STATS|USAGE key [SAMPLES count]',
TIME: '',
LASTSAVE: '',
BGSAVE: '[SCHEDULE]',
BGREWRITEAOF: '',
SAVE: '',
SHUTDOWN: '[NOSAVE|SAVE] [NOW] [FORCE]',
ACL: 'CAT|DELUSER|GENPASS|GETUSER|LIST|LOAD|LOG|SAVE|SETUSER|WHOAMI ...',
MODULE: 'LIST|LOAD|LOADEX|UNLOAD ...',
COMMAND: '[COUNT|DOCS|GETKEYS|INFO|LIST ...]',
DEBUG: 'subcommand [arg ...]',
LATENCY: 'HISTORY|LATEST|RESET event',
SWAPDB: 'index1 index2',
REPLICAOF: 'host port',
SLAVEOF: 'host port',
FAILOVER: '[TO host port [FORCE]] [ABORT] [TIMEOUT ms]',
CLUSTER: 'INFO|NODES|SLOTS|MYID|RESET|KEYSLOT|...',
// Pub/Sub
PUBLISH: 'channel message',
SUBSCRIBE: 'channel [channel ...]',
UNSUBSCRIBE: '[channel ...]',
PSUBSCRIBE: 'pattern [pattern ...]',
PUNSUBSCRIBE: '[pattern ...]',
PUBSUB: 'CHANNELS|NUMSUB|NUMPAT|SHARDCHANNELS|SHARDNUMSUB [argument ...]',
// Scripting
EVAL: '"script" numkeys [key ...] [arg ...]',
EVALSHA: 'sha1 numkeys [key ...] [arg ...]',
EVALRO: '"script" numkeys [key ...] [arg ...]',
EVALSHA_RO: 'sha1 numkeys [key ...] [arg ...]',
SCRIPT: 'DEBUG|EXISTS|FLUSH|LOAD ...',
FCALL: 'function numkeys [key ...] [arg ...]',
FCALL_RO: 'function numkeys [key ...] [arg ...]',
FUNCTION: 'CREATE|DELETE|DUMP|FLUSH|LIST|LOAD|RESTORE|STATS ...',
// Geo
GEOADD: 'key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]',
GEOPOS: 'key member [member ...]',
GEODIST: 'key member1 member2 [M|KM|FT|MI]',
GEOSEARCH: 'key FROMMEMBER member|FROMLONLAT lng lat BYRADIUS radius M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH]',
GEOSEARCHSTORE: 'destination source FROMMEMBER member|FROMLONLAT lng lat BYRADIUS radius unit|BYBOX width height unit [ASC|DESC] [COUNT count [ANY]] [STOREDIST]',
GEORADIUS: 'key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]',
GEORADIUSBYMEMBER: 'key member radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]',
GEOHASH: 'key member [member ...]',
// HyperLogLog
PFADD: 'key element [element ...]',
PFCOUNT: 'key [key ...]',
PFMERGE: 'destkey sourcekey [sourcekey ...]',
// Bitmap
SETBIT: 'key offset value',
GETBIT: 'key offset',
BITCOUNT: 'key [start end [BYTE|BIT]]',
BITPOS: 'key bit [start [end [BYTE|BIT]]]',
BITOP: 'AND|OR|XOR|NOT destkey key [key ...]',
BITFIELD: 'key [GET encoding offset | SET encoding offset value | INCRBY encoding offset increment | OVERFLOW WRAP|SAT|FAIL] ...',
BITFIELD_RO: 'key GET encoding offset [GET encoding offset ...]',
// JSON (ReJSON)
'JSON.SET': 'key path value [NX|XX]',
'JSON.GET': 'key [path ...]',
'JSON.DEL': 'key [path]',
'JSON.MGET': 'key [key ...] path',
'JSON.TYPE': 'key [path]',
'JSON.NUMINCRBY': 'key path value',
'JSON.NUMMULTBY': 'key path value',
'JSON.STRAPPEND': 'key [path] value',
'JSON.STRLEN': 'key [path]',
'JSON.ARRAPPEND': 'key path value [value ...]',
'JSON.ARRINDEX': 'key path value [start [stop]]',
'JSON.ARRINSERT': 'key path index value [value ...]',
'JSON.ARRLEN': 'key [path]',
'JSON.ARRPOP': 'key [path [index]]',
'JSON.ARRTRIM': 'key path start stop',
'JSON.OBJKEYS': 'key [path]',
'JSON.OBJLEN': 'key [path]',
'JSON.RESP': 'key [path]',
// RediSearch
'FT.CREATE': 'index [ON HASH|JSON] [PREFIX count prefix ...] SCHEMA field TYPE [SORTABLE] ...',
'FT.SEARCH': 'index query [NOCONTENT] [VERBATIM] [NOSTOPWORDS] [WITHSCORES] [WITHPAYLOADS] [WITHSORTKEYS] [FILTER field min max ...] [GEOFILTER field lon lat radius unit] [INKEYS count key ...] [INFIELDS count field ...] [RETURN count field ...] [SUMMARIZE ...] [HIGHLIGHT ...] [SLOP slop] [TIMEOUT timeout] [INORDER] [LANGUAGE lang] [EXPANDER exp] [SCORER scorer] [SORTBY field [ASC|DESC]] [LIMIT offset num]',
'FT.AGGREGATE': 'index query [LOAD count field ...] [GROUPBY count field ... REDUCE func nargs arg ... [AS name]] [SORTBY count field [ASC|DESC] ...] [APPLY expr AS name] [LIMIT offset num] [FILTER expr]',
'FT.INFO': 'index',
'FT.DROPINDEX': 'index [DD]',
'FT._LIST': '',
'FT.ALTER': 'index SCHEMA ADD field TYPE ...',
'FT.ALIASADD': 'alias index',
'FT.ALIASDEL': 'alias',
'FT.ALIASUPDATE': 'alias index',
'FT.TAGVALS': 'index field',
'FT.EXPLAIN': 'index query',
// TimeSeries
'TS.CREATE': 'key [RETENTION retentionPeriod] [ENCODING UNCOMPRESSED|COMPRESSED] [CHUNK_SIZE size] [DUPLICATE_POLICY policy] [LABELS label value ...]',
'TS.ADD': 'key timestamp value [RETENTION retentionPeriod] [ENCODING UNCOMPRESSED|COMPRESSED] [CHUNK_SIZE size] [ON_DUPLICATE policy] [LABELS label value ...]',
'TS.MADD': 'key timestamp value [key timestamp value ...]',
'TS.INCRBY': 'key value [TIMESTAMP timestamp] [RETENTION retentionPeriod] [LABELS label value ...]',
'TS.DECRBY': 'key value [TIMESTAMP timestamp] [RETENTION retentionPeriod] [LABELS label value ...]',
'TS.DEL': 'key fromTimestamp toTimestamp',
'TS.RANGE': 'key fromTimestamp toTimestamp [LATEST] [FILTER_BY_TS ts ...] [FILTER_BY_VALUE min max] [COUNT count] [AGGREGATION aggregator bucketDuration]',
'TS.REVRANGE': 'key fromTimestamp toTimestamp [LATEST] [FILTER_BY_TS ts ...] [FILTER_BY_VALUE min max] [COUNT count] [AGGREGATION aggregator bucketDuration]',
'TS.MRANGE': 'fromTimestamp toTimestamp [LATEST] [FILTER_BY_TS ts ...] [FILTER_BY_VALUE min max] [WITHLABELS] [COUNT count] [AGGREGATION aggregator bucketDuration] FILTER filter ...',
'TS.MREVRANGE': 'fromTimestamp toTimestamp [LATEST] [FILTER_BY_TS ts ...] [FILTER_BY_VALUE min max] [WITHLABELS] [COUNT count] [AGGREGATION aggregator bucketDuration] FILTER filter ...',
'TS.GET': 'key [LATEST]',
'TS.MGET': '[LATEST] [WITHLABELS] FILTER filter ...',
'TS.INFO': 'key [DEBUG]',
'TS.ALTER': 'key [RETENTION retentionPeriod] [CHUNK_SIZE size] [DUPLICATE_POLICY policy] [LABELS label value ...]',
'TS.QUERYINDEX': 'filter ...',
'TS.CREATERULE': 'sourceKey destKey AGGREGATION aggregator bucketDuration [alignTimestamp]',
'TS.DELETERULE': 'sourceKey destKey',
}