package rdm import "github.com/may-fly/cast" // write cmd var writeCmd = map[string]string{ "APPEND": "APPEND key value", "BLMOVE": "BLMOVE source destination LEFT|RIGHT LEFT|RIGHT timeout", "BLPOP": "BLPOP key [key ...] timeout", "BRPOP": "BRPOP key [key ...] timeout", "BRPOPLPUSH": "BRPOPLPUSH source destination timeout", "BZPOPMAX": "BZPOPMAX key [key ...] timeout", "BZPOPMIN": "BZPOPMIN key [key ...] timeout", "COPY": "COPY source destination [DB destination-db] [REPLACE]", "DECR": "DECR key", "DECRBY": "DECRBY key decrement", "DEL": "DEL key [key ...]", "EVAL": "EVAL script numkeys key [key ...] arg [arg ...]", "EVALSHA": "EVALSHA sha1 numkeys key [key ...] arg [arg ...]", "EXPIRE": "EXPIRE key seconds", "EXPIREAT": "EXPIREAT key timestamp", "FLUSHALL": "FLUSHALL", "FLUSHDB": "FLUSHDB", "GEOADD": "GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]", "GETDEL": "GETDEL key", "GETSET": "GETSET key value", "HDEL": "HDEL key field [field ...]", "HINCRBY": "HINCRBY key field increment", "HINCRBYFLOAT": "HINCRBYFLOAT key field increment", "HMSET": "HMSET key field value [field value ...]", "HSET": "HSET key field value", "HSETNX": "HSETNX key field value", "INCR": "INCR key", "INCRBY": "INCRBY key increment", "INCRBYFLOAT": "INCRBYFLOAT key increment", "LINSERT": "LINSERT key BEFORE|AFTER pivot value", "LMOVE": "LMOVE source destination LEFT|RIGHT LEFT|RIGHT", "LPOP": "LPOP key", "LPUSH": "LPUSH key value [value ...]", "LPUSHX": "LPUSHX key value", "LREM": "LREM key count value", "LSET": "LSET key index value", "LTRIM": "LTRIM key start stop", "MIGRATE": "MIGRATE host port key destination-db timeout", "MOVE": "MOVE key db", "MSET": "MSET key value [key value ...]", "MSETNX": "MSETNX key value [key value ...]", "PERSIST": "PERSIST key", "PEXPIRE": "PEXPIRE key milliseconds", "PEXPIREAT": "PEXPIREAT key milliseconds-timestamp", "PSETEX": "PSETEX key milliseconds value", "PUBLISH": "PUBLISH channel message", "RENAME": "RENAME key newkey", "RENAMENX": "RENAMENX key newkey", "RESTORE": "RESTORE key ttl serialized-value", "RPOP": "RPOP key", "RPOPLPUSH": "RPOPLPUSH source destination", "RPUSH": "RPUSH key value [value ...]", "RPUSHX": "RPUSHX key value", "SADD": "SADD key member [member ...]", "SCRIPT": "SCRIPT EXISTS script [script ...], 'SCRIPT FLUSH', 'SCRIPT KILL', SCRIPT LOAD script", "SDIFFSTORE": "SDIFFSTORE destination key [key ...]", "SET": "SET key value", "SETBIT": "SETBIT key offset value", "SETEX": "SETEX key seconds value", "SETNX": "SETNX key value", "SETRANGE": "SETRANGE key offset value", "SINTERSTORE": "SINTERSTORE destination key [key ...]", "SMOVE": "SMOVE source destination member", "SORT": "SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]", "SPOP": "SPOP key", "SREM": "SREM key member [member ...]", "SUNIONSTORE": "SUNIONSTORE destination key [key ...]", "SWAPDB": "SWAPDB index1 index2", "UNLINK": "UNLINK key [key ...]", "XADD": "XADD key ID field string [field string ...]", "XDEL": "XDEL key ID [ID ...]", "XGROUP": "XGROUP CREATE key groupname id|$ [MKSTREAM], XGROUP CREATECONSUMER key groupname consumername, XGROUP DELCONSUMER key groupname consumername, XGROUP DESTROY key groupname, XGROUP SETID key groupname id|$", "XTRIM": "XTRIM key MAXLEN [~] count", "ZADD": "ZADD key score member [score] [member]", "ZDIFFSTORE": "ZDIFFSTORE destination numkeys key [key ...]", "ZINCRBY": "ZINCRBY key increment member", "ZINTERSTORE": "ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]", "ZPOPMAX": "ZPOPMAX key [count]", "ZPOPMIN": "ZPOPMIN key [count]", "ZRANGESTORE": "ZRANGESTORE dst src min max [BYSCORE|BYLEX] [REV] [LIMIT offset count]", "ZREM": "ZREM key member [member ...]", "ZREMRANGEBYLEX": "ZREMRANGEBYLEX key min max", "ZREMRANGEBYRANK": "ZREMRANGEBYRANK key start stop", "ZREMRANGEBYSCORE": "ZREMRANGEBYSCORE key min max", "ZUNIONSTORE": "ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]", } // 判断命令是否写命令 func IsWriteCmd(cmd any) bool { _, ok := writeCmd[cast.ToString(cmd)] return ok }