package redis type RedisType string type RedisCommand string type RedisKeyword string var types map[rune]RedisType = map[rune]RedisType{ plusByte: "Simple String", dollarByte: "Bulk String", asteriskByte: "Array", colonByte: "Integer", minusByte: "Error", notApplicableByte: "N/A", } var commands []RedisCommand = []RedisCommand{ "PING", "SET", "GET", "QUIT", "EXISTS", "DEL", "UNLINK", "TYPE", "FLUSHDB", "KEYS", "RANDOMKEY", "RENAME", "RENAMENX", "RENAMEX", "DBSIZE", "EXPIRE", "EXPIREAT", "TTL", "SELECT", "MOVE", "FLUSHALL", "GETSET", "MGET", "SETNX", "SETEX", "MSET", "MSETNX", "DECRBY", "DECR", "INCRBY", "INCR", "APPEND", "SUBSTR", "HSET", "HGET", "HSETNX", "HMSET", "HMGET", "HINCRBY", "HEXISTS", "HDEL", "HLEN", "HKEYS", "HVALS", "HGETALL", "RPUSH", "LPUSH", "LLEN", "LRANGE", "LTRIM", "LINDEX", "LSET", "LREM", "LPOP", "RPOP", "RPOPLPUSH", "SADD", "SMEMBERS", "SREM", "SPOP", "SMOVE", "SCARD", "SISMEMBER", "SINTER", "SINTERSTORE", "SUNION", "SUNIONSTORE", "SDIFF", "SDIFFSTORE", "SRANDMEMBER", "ZADD", "ZRANGE", "ZREM", "ZINCRBY", "ZRANK", "ZREVRANK", "ZREVRANGE", "ZCARD", "ZSCORE", "MULTI", "DISCARD", "EXEC", "WATCH", "UNWATCH", "SORT", "BLPOP", "BRPOP", "AUTH", "SUBSCRIBE", "PUBLISH", "UNSUBSCRIBE", "PSUBSCRIBE", "PUNSUBSCRIBE", "PUBSUB", "ZCOUNT", "ZRANGEBYSCORE", "ZREVRANGEBYSCORE", "ZREMRANGEBYRANK", "ZREMRANGEBYSCORE", "ZUNIONSTORE", "ZINTERSTORE", "ZLEXCOUNT", "ZRANGEBYLEX", "ZREVRANGEBYLEX", "ZREMRANGEBYLEX", "SAVE", "BGSAVE", "BGREWRITEAOF", "LASTSAVE", "SHUTDOWN", "INFO", "MONITOR", "SLAVEOF", "CONFIG", "STRLEN", "SYNC", "LPUSHX", "PERSIST", "RPUSHX", "ECHO", "LINSERT", "DEBUG", "BRPOPLPUSH", "SETBIT", "GETBIT", "BITPOS", "SETRANGE", "GETRANGE", "EVAL", "EVALSHA", "SCRIPT", "SLOWLOG", "OBJECT", "BITCOUNT", "BITOP", "SENTINEL", "DUMP", "RESTORE", "PEXPIRE", "PEXPIREAT", "PTTL", "INCRBYFLOAT", "PSETEX", "CLIENT", "TIME", "MIGRATE", "HINCRBYFLOAT", "SCAN", "HSCAN", "SSCAN", "ZSCAN", "WAIT", "CLUSTER", "ASKING", "PFADD", "PFCOUNT", "PFMERGE", "READONLY", "GEOADD", "GEODIST", "GEOHASH", "GEOPOS", "GEORADIUS", "GEORADIUS_RO", "GEORADIUSBYMEMBER", "GEORADIUSBYMEMBER_RO", "MODULE", "BITFIELD", "HSTRLEN", "TOUCH", "SWAPDB", "MEMORY", "XADD", "XLEN", "XDEL", "XTRIM", "XRANGE", "XREVRANGE", "XREAD", "XACK", "XGROUP", "XREADGROUP", "XPENDING", "XCLAIM", } var keywords []RedisKeyword = []RedisKeyword{ "AGGREGATE", "ALPHA", "ASC", "BY", "DESC", "GET", "LIMIT", "MESSAGE", "NO", "NOSORT", "PMESSAGE", "PSUBSCRIBE", "PUNSUBSCRIBE", "OK", "ONE", "QUEUED", "SET", "STORE", "SUBSCRIBE", "UNSUBSCRIBE", "WEIGHTS", "WITHSCORES", "RESETSTAT", "REWRITE", "RESET", "FLUSH", "EXISTS", "LOAD", "KILL", "LEN", "REFCOUNT", "ENCODING", "IDLETIME", "GETNAME", "SETNAME", "LIST", "MATCH", "COUNT", "PING", "PONG", "UNLOAD", "REPLACE", "KEYS", "PAUSE", "DOCTOR", "BLOCK", "NOACK", "STREAMS", "KEY", "CREATE", "MKSTREAM", "SETID", "DESTROY", "DELCONSUMER", "MAXLEN", "GROUP", "IDLE", "TIME", "RETRYCOUNT", "FORCE", } type RedisPacket struct { Type RedisType `json:"type"` Command RedisCommand `json:"command"` Key string `json:"key"` Value string `json:"value"` Keyword RedisKeyword `json:"keyword"` } func isValidRedisCommand(s []RedisCommand, c RedisCommand) bool { for _, v := range s { if v == c { return true } } return false } func isValidRedisKeyword(s []RedisKeyword, c RedisKeyword) bool { for _, v := range s { if v == c { return true } } return false }