parentFlags) {
- this.parentFlags = parentFlags;
- this.subcommands = new JedisByteMap<>();
- }
+ public static StaticCommandFlagsRegistry registry() {
+ return REGISTRY;
}
- static {
- // ACL parent command with subcommands
- SubcommandRegistry aclRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- aclRegistry.subcommands.put(SafeEncoder.encode("CAT"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("DELUSER"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("DRYRUN"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("GENPASS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("GETUSER"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("LIST"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("LOAD"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("LOG"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("SAVE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("SETUSER"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("USERS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- aclRegistry.subcommands.put(SafeEncoder.encode("WHOAMI"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ACL"), aclRegistry);
-
- // OBJECT parent command with subcommands
- SubcommandRegistry objectRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- objectRegistry.subcommands.put(SafeEncoder.encode("ENCODING"), EnumSet.of(CommandFlag.READONLY));
- objectRegistry.subcommands.put(SafeEncoder.encode("FREQ"), EnumSet.of(CommandFlag.READONLY));
- objectRegistry.subcommands.put(SafeEncoder.encode("IDLETIME"), EnumSet.of(CommandFlag.READONLY));
- objectRegistry.subcommands.put(SafeEncoder.encode("REFCOUNT"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("OBJECT"), objectRegistry);
-
- // FUNCTION parent command with subcommands
- SubcommandRegistry functionRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- functionRegistry.subcommands.put(SafeEncoder.encode("DELETE"), EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.WRITE));
- functionRegistry.subcommands.put(SafeEncoder.encode("DUMP"), EnumSet.of(CommandFlag.NOSCRIPT));
- functionRegistry.subcommands.put(SafeEncoder.encode("FLUSH"), EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.WRITE));
- functionRegistry.subcommands.put(SafeEncoder.encode("KILL"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
- functionRegistry.subcommands.put(SafeEncoder.encode("LIST"), EnumSet.of(CommandFlag.NOSCRIPT));
- functionRegistry.subcommands.put(SafeEncoder.encode("LOAD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.NOSCRIPT, CommandFlag.WRITE));
- functionRegistry.subcommands.put(SafeEncoder.encode("RESTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.NOSCRIPT, CommandFlag.WRITE));
- functionRegistry.subcommands.put(SafeEncoder.encode("STATS"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FUNCTION"), functionRegistry);
-
- // CLIENT parent command with subcommands
- SubcommandRegistry clientRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- clientRegistry.subcommands.put(SafeEncoder.encode("CACHING"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("GETNAME"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("GETREDIR"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("ID"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("INFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("KILL"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("LIST"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("NO-EVICT"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("NO-TOUCH"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("PAUSE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("REPLY"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("SETINFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("SETNAME"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("TRACKING"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("TRACKINGINFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("UNBLOCK"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clientRegistry.subcommands.put(SafeEncoder.encode("UNPAUSE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CLIENT"), clientRegistry);
-
- // CONFIG parent command with subcommands
- SubcommandRegistry configRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- configRegistry.subcommands.put(SafeEncoder.encode("GET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- configRegistry.subcommands.put(SafeEncoder.encode("RESETSTAT"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- configRegistry.subcommands.put(SafeEncoder.encode("REWRITE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- configRegistry.subcommands.put(SafeEncoder.encode("SET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CONFIG"), configRegistry);
-
- // MODULE parent command with subcommands
- SubcommandRegistry moduleRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- moduleRegistry.subcommands.put(SafeEncoder.encode("LIST"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT));
- moduleRegistry.subcommands.put(SafeEncoder.encode("LOAD"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
- moduleRegistry.subcommands.put(SafeEncoder.encode("LOADEX"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
- moduleRegistry.subcommands.put(SafeEncoder.encode("UNLOAD"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MODULE"), moduleRegistry);
-
- // PUBSUB parent command with subcommands
- SubcommandRegistry pubsubRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- pubsubRegistry.subcommands.put(SafeEncoder.encode("CHANNELS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- pubsubRegistry.subcommands.put(SafeEncoder.encode("NUMPAT"), EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- pubsubRegistry.subcommands.put(SafeEncoder.encode("NUMSUB"), EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- pubsubRegistry.subcommands.put(SafeEncoder.encode("SHARDCHANNELS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- pubsubRegistry.subcommands.put(SafeEncoder.encode("SHARDNUMSUB"), EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PUBSUB"), pubsubRegistry);
-
- // SCRIPT parent command with subcommands
- SubcommandRegistry scriptRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- scriptRegistry.subcommands.put(SafeEncoder.encode("DEBUG"), EnumSet.of(CommandFlag.NOSCRIPT));
- scriptRegistry.subcommands.put(SafeEncoder.encode("EXISTS"), EnumSet.of(CommandFlag.NOSCRIPT));
- scriptRegistry.subcommands.put(SafeEncoder.encode("FLUSH"), EnumSet.of(CommandFlag.NOSCRIPT));
- scriptRegistry.subcommands.put(SafeEncoder.encode("KILL"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
- scriptRegistry.subcommands.put(SafeEncoder.encode("LOAD"), EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SCRIPT"), scriptRegistry);
-
- // MEMORY parent command with subcommands
- SubcommandRegistry memoryRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- memoryRegistry.subcommands.put(SafeEncoder.encode("DOCTOR"), EMPTY_FLAGS);
- memoryRegistry.subcommands.put(SafeEncoder.encode("MALLOC-STATS"), EMPTY_FLAGS);
- memoryRegistry.subcommands.put(SafeEncoder.encode("PURGE"), EMPTY_FLAGS);
- memoryRegistry.subcommands.put(SafeEncoder.encode("STATS"), EMPTY_FLAGS);
- memoryRegistry.subcommands.put(SafeEncoder.encode("USAGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MEMORY"), memoryRegistry);
-
- // SLOWLOG parent command with subcommands
- SubcommandRegistry slowlogRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- slowlogRegistry.subcommands.put(SafeEncoder.encode("GET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
- slowlogRegistry.subcommands.put(SafeEncoder.encode("LEN"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
- slowlogRegistry.subcommands.put(SafeEncoder.encode("RESET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SLOWLOG"), slowlogRegistry);
-
- // COMMAND parent command with subcommands
- SubcommandRegistry commandRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- commandRegistry.subcommands.put(SafeEncoder.encode("COUNT"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- commandRegistry.subcommands.put(SafeEncoder.encode("DOCS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- commandRegistry.subcommands.put(SafeEncoder.encode("GETKEYS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- commandRegistry.subcommands.put(SafeEncoder.encode("GETKEYSANDFLAGS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- commandRegistry.subcommands.put(SafeEncoder.encode("INFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- commandRegistry.subcommands.put(SafeEncoder.encode("LIST"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("COMMAND"), commandRegistry);
-
- // LATENCY parent command with subcommands
- SubcommandRegistry latencyRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- latencyRegistry.subcommands.put(SafeEncoder.encode("DOCTOR"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- latencyRegistry.subcommands.put(SafeEncoder.encode("GRAPH"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- latencyRegistry.subcommands.put(SafeEncoder.encode("HISTOGRAM"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- latencyRegistry.subcommands.put(SafeEncoder.encode("HISTORY"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- latencyRegistry.subcommands.put(SafeEncoder.encode("LATEST"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- latencyRegistry.subcommands.put(SafeEncoder.encode("RESET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LATENCY"), latencyRegistry);
-
- // CLUSTER parent command with subcommands
- SubcommandRegistry clusterRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- clusterRegistry.subcommands.put(SafeEncoder.encode("ADDSLOTS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("ADDSLOTSRANGE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("BUMPEPOCH"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("COUNT-FAILURE-REPORTS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("COUNTKEYSINSLOT"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("DELSLOTS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("DELSLOTSRANGE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("FAILOVER"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("FLUSHSLOTS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("FORGET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("GETKEYSINSLOT"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("INFO"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("KEYSLOT"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("LINKS"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("MEET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("MYID"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("MYSHARDID"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("NODES"), EnumSet.of(CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("REPLICAS"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("REPLICATE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("RESET"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SAVECONFIG"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SET-CONFIG-EPOCH"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SETSLOT"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SHARDS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SLAVES"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SLOT-STATS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- clusterRegistry.subcommands.put(SafeEncoder.encode("SLOTS"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CLUSTER"), clusterRegistry);
-
- // XINFO parent command with subcommands
- SubcommandRegistry xinfoRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- xinfoRegistry.subcommands.put(SafeEncoder.encode("CONSUMERS"), EnumSet.of(CommandFlag.READONLY));
- xinfoRegistry.subcommands.put(SafeEncoder.encode("GROUPS"), EnumSet.of(CommandFlag.READONLY));
- xinfoRegistry.subcommands.put(SafeEncoder.encode("STREAM"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XINFO"), xinfoRegistry);
-
- // XGROUP parent command with subcommands
- SubcommandRegistry xgroupRegistry = new SubcommandRegistry(EMPTY_FLAGS);
- xgroupRegistry.subcommands.put(SafeEncoder.encode("CREATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- xgroupRegistry.subcommands.put(SafeEncoder.encode("CREATECONSUMER"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- xgroupRegistry.subcommands.put(SafeEncoder.encode("DELCONSUMER"), EnumSet.of(CommandFlag.WRITE));
- xgroupRegistry.subcommands.put(SafeEncoder.encode("DESTROY"), EnumSet.of(CommandFlag.WRITE));
- xgroupRegistry.subcommands.put(SafeEncoder.encode("SETID"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XGROUP"), xgroupRegistry);
-
- // 1 command(s) with: admin
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PFSELFTEST"), EnumSet.of(CommandFlag.ADMIN));
-
- // 2 command(s) with: blocking
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("WAIT"), EnumSet.of(CommandFlag.BLOCKING));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("WAITAOF"), EnumSet.of(CommandFlag.BLOCKING));
-
- // 2 command(s) with: fast
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ASKING"), EnumSet.of(CommandFlag.FAST));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PING"), EnumSet.of(CommandFlag.FAST));
-
- // 41 command(s) with: readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BITCOUNT"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BITPOS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DUMP"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEODIST"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEOHASH"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEOPOS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEORADIUSBYMEMBER_RO"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEORADIUS_RO"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEOSEARCH"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GETRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HGETALL"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HKEYS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HRANDFIELD"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HSCAN"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HVALS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("KEYS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LCS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LINDEX"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LPOS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PFCOUNT"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RANDOMKEY"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SCAN"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SDIFF"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SINTER"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SMEMBERS"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SRANDMEMBER"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SSCAN"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SUBSTR"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SUNION"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XPENDING"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XREVRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANDMEMBER"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANGEBYLEX"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANGEBYSCORE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREVRANGE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREVRANGEBYLEX"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREVRANGEBYSCORE"), EnumSet.of(CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZSCAN"), EnumSet.of(CommandFlag.READONLY));
-
- // 10 command(s) with: write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DEL"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FLUSHALL"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FLUSHDB"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LREM"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LTRIM"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RENAME"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XTRIM"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREMRANGEBYLEX"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREMRANGEBYRANK"), EnumSet.of(CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREMRANGEBYSCORE"), EnumSet.of(CommandFlag.WRITE));
-
- // 2 command(s) with: blocking, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BLPOP"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BRPOP"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.WRITE));
-
- // 22 command(s) with: denyoom, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BITFIELD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BITOP"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("COPY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEOADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEOSEARCHSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LINSERT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LMOVE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MSETNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PFMERGE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PSETEX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RESTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RPOPLPUSH"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SDIFFSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SETBIT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SETEX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SETRANGE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SINTERSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SUNIONSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANGESTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
-
- // 35 command(s) with: fast, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BITFIELD_RO"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DBSIZE"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EXPIRETIME"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GET"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GETBIT"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HEXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HEXPIRETIME"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HGET"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HLEN"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HMGET"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HPEXPIRETIME"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HPTTL"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HSTRLEN"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HTTL"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LLEN"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LOLWUT"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MGET"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PEXPIRETIME"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PTTL"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SCARD"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SISMEMBER"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SMISMEMBER"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("STRLEN"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOUCH"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TTL"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TYPE"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XLEN"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZCARD"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZCOUNT"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZLEXCOUNT"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZMSCORE"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZRANK"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREVRANK"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZSCORE"), EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
-
- // 33 command(s) with: fast, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EXPIRE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EXPIREAT"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GETDEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GETEX"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HDEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HEXPIRE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HEXPIREAT"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HGETDEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HGETEX"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HPERSIST"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HPEXPIRE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HPEXPIREAT"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LPOP"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MOVE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PERSIST"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PEXPIRE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PEXPIREAT"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RENAMENX"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RPOP"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SMOVE"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SPOP"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SREM"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SWAPDB"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("UNLINK"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XACK"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XACKDEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XAUTOCLAIM"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XCLAIM"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XDEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XDELEX"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZPOPMAX"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZPOPMIN"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZREM"), EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
-
- // 1 command(s) with: loading, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("INFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
-
- // 55 command(s) with: module, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.INFO"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.QUERY"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.AGGREGATE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.CONFIG"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.CURSOR"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DICTDUMP"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.EXPLAIN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.EXPLAINCLI"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.GET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.INFO"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.MGET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.PROFILE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SEARCH"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SPELLCHECK"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SUGGET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SUGLEN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SYNDUMP"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.TAGVALS"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._LIST"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRINDEX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRLEN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.DEBUG"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.GET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.MGET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.OBJKEYS"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.OBJLEN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.RESP"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.STRLEN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.TYPE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.BYRANK"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.BYREVRANK"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.CDF"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.INFO"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.MAX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.MIN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.QUANTILE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.RANK"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.REVRANK"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.TRIMMED_MEAN"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.COUNT"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.INFO"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.LIST"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.QUERY"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.GET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.INFO"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.MGET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.MRANGE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.MREVRANGE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.QUERYINDEX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.RANGE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.REVRANGE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VISMEMBER"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VRANDMEMBER"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VSIM"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("_FT.CONFIG"), EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
-
- // 20 command(s) with: module, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.ALIASDEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DICTDEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DROP"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DROPINDEX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SUGDEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._ALIASDELIFX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._DROPIFX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._DROPINDEXIFX"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRPOP"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRTRIM"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.CLEAR"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.DEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.FORGET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.NUMINCRBY"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.NUMMULTBY"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.NUMPOWBY"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.DEL"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.DELETERULE"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VREM"), EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
-
- // 6 command(s) with: movablekeys, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SINTERCARD"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SORT_RO"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZDIFF"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZINTER"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZINTERCARD"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZUNION"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
-
- // 3 command(s) with: movablekeys, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LMPOP"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MIGRATE"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZMPOP"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
-
- // 1 command(s) with: admin, denyoom, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PFDEBUG"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.DENYOOM, CommandFlag.WRITE));
-
- // 2 command(s) with: admin, noscript, no_async_loading
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BGREWRITEAOF"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BGSAVE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
-
- // 1 command(s) with: admin, noscript, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FAILOVER"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.STALE));
-
- // 1 command(s) with: asking, denyoom, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RESTORE-ASKING"), EnumSet.of(CommandFlag.ASKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
-
- // 2 command(s) with: blocking, denyoom, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BLMOVE"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BRPOPLPUSH"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
-
- // 2 command(s) with: blocking, fast, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BZPOPMAX"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BZPOPMIN"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.FAST, CommandFlag.WRITE));
-
- // 1 command(s) with: blocking, movablekeys, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XREAD"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
-
- // 3 command(s) with: blocking, movablekeys, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BLMPOP"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BZMPOP"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XREADGROUP"), EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
-
- // 24 command(s) with: denyoom, fast, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("APPEND"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DECR"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DECRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GETSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HINCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HINCRBYFLOAT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HMSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HSETEX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HSETNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("INCR"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("INCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("INCRBYFLOAT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LPUSH"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LPUSHX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PFADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RPUSH"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RPUSHX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SETNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("XSETID"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZINCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
-
- // 49 command(s) with: denyoom, module, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.INSERT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.LOADCHUNK"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.MADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.RESERVE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.ADDNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.INSERT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.INSERTNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.LOADCHUNK"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.RESERVE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.INCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.INITBYDIM"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.INITBYPROB"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CMS.MERGE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.ALIASADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.ALIASUPDATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.ALTER"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.CREATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.DICTADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SUGADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SYNADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT.SYNUPDATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._ALIASADDIFNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._ALTERIFNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FT._CREATEIFNX"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRAPPEND"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.ARRINSERT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.MERGE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.MSET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.SET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.STRAPPEND"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("JSON.TOGGLE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.CREATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.MERGE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TDIGEST.RESET"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.INCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TOPK.RESERVE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.ADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.ALTER"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.CREATE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.DECRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.INCRBY"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.MADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("_FT.SAFEADD"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
-
- // 6 command(s) with: denyoom, movablekeys, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEORADIUS"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("GEORADIUSBYMEMBER"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SORT"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZDIFFSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZINTERSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ZUNIONSTORE"), EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
-
- // 6 command(s) with: fast, loading, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ECHO"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("LASTSAVE"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("READONLY"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("READWRITE"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SELECT"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TIME"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
-
- // 19 command(s) with: fast, module, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.CARD"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.DEBUG"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.EXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.INFO"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.MEXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("BF.SCANDUMP"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.COMPACT"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.COUNT"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.DEBUG"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.EXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.INFO"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.MEXISTS"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.SCANDUMP"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VCARD"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VDIM"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VEMB"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VGETATTR"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VINFO"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VLINKS"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
-
- // 3 command(s) with: fast, module, write
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("CF.DEL"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TS.CREATERULE"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("VSETATTR"), EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
-
- // 3 command(s) with: module, noscript, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SEARCH.CLUSTERREFRESH"), EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TIMESERIES.CLUSTERSET"), EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("TIMESERIES.REFRESHCLUSTER"), EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
-
- // 2 command(s) with: admin, loading, noscript, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DEBUG"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MONITOR"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
-
- // 3 command(s) with: admin, noscript, no_async_loading, no_multi
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PSYNC"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SAVE"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SYNC"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
-
- // 2 command(s) with: admin, noscript, no_async_loading, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("REPLICAOF"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SLAVEOF"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
-
- // 1 command(s) with: fast, loading, noscript, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("ROLE"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
-
- // 2 command(s) with: fast, loading, pubsub, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PUBLISH"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SPUBLISH"), EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
-
- // 2 command(s) with: loading, module, noscript, readonly
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SEARCH.CLUSTERINFO"), EnumSet.of(CommandFlag.LOADING, CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SEARCH.CLUSTERSET"), EnumSet.of(CommandFlag.LOADING, CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
-
- // 6 command(s) with: loading, noscript, pubsub, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PSUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("PUNSUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SSUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SUNSUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("UNSUBSCRIBE"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
-
- // 1 command(s) with: loading, noscript, skip_slowlog, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EXEC"), EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.SKIP_SLOWLOG, CommandFlag.STALE));
-
- // 1 command(s) with: admin, allow_busy, loading, noscript, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("REPLCONF"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.ALLOW_BUSY, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
-
- // 4 command(s) with: allow_busy, fast, loading, noscript, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("DISCARD"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("MULTI"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("UNWATCH"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("WATCH"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
-
- // 3 command(s) with: movablekeys, noscript, no_mandatory_keys, skip_monitor, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EVAL"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EVALSHA"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FCALL"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
-
- // 1 command(s) with: admin, allow_busy, loading, noscript, no_multi, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("SHUTDOWN"), EnumSet.of(CommandFlag.ADMIN, CommandFlag.ALLOW_BUSY, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_MULTI, CommandFlag.STALE));
-
- // 4 command(s) with: allow_busy, fast, loading, noscript, no_auth, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("AUTH"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("HELLO"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("QUIT"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("RESET"), EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
-
- // 3 command(s) with: movablekeys, noscript, no_mandatory_keys, readonly, skip_monitor, stale
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EVALSHA_RO"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("EVAL_RO"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
- COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode("FCALL_RO"), EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS, CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+ private static StaticCommandFlagsRegistry createRegistry() {
+
+ Builder builder = new Builder();
+ // Delegate population to generated class
+ StaticCommandFlagsRegistryInitializer.initialize(builder);
+
+ return builder.build();
}
/**
- * Get the flags for a given command. Flags are looked up from a static
- * registry based on the command arguments. This approach significantly reduces
- * memory usage by sharing flag instances across all CommandObject instances.
+ * Get the flags for a given command. Flags are looked up from a static registry based on the
+ * command arguments. This approach significantly reduces memory usage by sharing flag instances
+ * across all CommandObject instances.
*
- * For commands with subcommands (e.g., FUNCTION LOAD, ACL SETUSER), this method
- * implements a hierarchical lookup strategy:
+ * For commands with subcommands (e.g., FUNCTION LOAD, ACL SETUSER), this method implements a
+ * hierarchical lookup strategy:
*
* First, retrieve the parent command using CommandArguments.getCommand()
* Check if this is a parent command (has subcommands in the registry)
* If it is a parent command, attempt to get the child/subcommand by:
- *
- * Extracting the second argument from the CommandArguments object
- * Matching this second argument against the child items of the parent command
- *
+ *
+ * Extracting the second argument from the CommandArguments object
+ * Matching this second argument against the child items of the parent command
+ *
*
- * Return the appropriate flags based on whether a child command was found or just use the parent command's flags
+ * Return the appropriate flags based on whether a child command was found or just use the
+ * parent command's flags
*
- *
* @param commandArguments the command arguments containing the command and its parameters
* @return EnumSet of CommandFlag for this command, or empty set if command has no flags
*/
@@ -725,45 +79,138 @@ public EnumSet getFlags(CommandArguments commandArguments) {
// Get the parent command
ProtocolCommand cmd = commandArguments.getCommand();
byte[] raw = cmd.getRaw();
-
+
// Convert to uppercase using SafeEncoder utility (faster than String.toUpperCase())
byte[] uppercaseBytes = SafeEncoder.toUpperCase(raw);
// Look up the parent command in the registry using byte array key
- Object registryEntry = COMMAND_FLAGS_REGISTRY.get(uppercaseBytes);
+ // Object registryEntry = COMMAND_FLAGS_REGISTRY.get(uppercaseBytes);
+ CommandMeta commandMeta = commands.getCommand(uppercaseBytes);
- if (registryEntry == null) {
+ if (commandMeta == null) {
// Command not found in registry
return EMPTY_FLAGS;
}
- // Check if this is a simple command (EnumSet) or a parent command with subcommands (SubcommandRegistry)
- if (registryEntry instanceof EnumSet) {
- // Simple command without subcommands
- return (EnumSet) registryEntry;
- } else if (registryEntry instanceof SubcommandRegistry) {
+ if (!commandMeta.hasSubcommands()) {
+ // Check if this is a simple command without subcommands
+ return commandMeta.getFlags();
+ } else {
// Parent command with subcommands
- SubcommandRegistry subcommandRegistry = (SubcommandRegistry) registryEntry;
-
// Try to extract the subcommand from the second argument
- if (commandArguments.size() > 1) {
- Rawable secondArg = commandArguments.get(1);
- byte[] subRaw = secondArg.getRaw();
-
- // Convert to uppercase using SafeEncoder utility
- byte[] subUppercaseBytes = SafeEncoder.toUpperCase(subRaw);
-
- EnumSet subcommandFlags = subcommandRegistry.subcommands.get(subUppercaseBytes);
- if (subcommandFlags != null) {
- return subcommandFlags;
+ byte[] subCommand = getSubCommand(commandArguments);
+ if (subCommand != null) {
+ CommandMeta subCommandMeta = commandMeta.getSubcommand(subCommand);
+ if (subCommandMeta != null) {
+ return subCommandMeta.getFlags();
+ } else {
+ // (second argument exists but not a recognized subcommand , return parent flags
+ return commandMeta.getFlags();
}
+ } else {
+ // no second argument (no subcommand), return parent flags
+ return commandMeta.getFlags();
+ }
+ }
+ }
+
+ private byte[] getSubCommand(CommandArguments commandArguments) {
+ if (commandArguments.size() > 1) {
+ Rawable secondArg = commandArguments.get(1);
+ byte[] subRaw = secondArg.getRaw();
+
+ // Convert to uppercase using SafeEncoder utility
+ return SafeEncoder.toUpperCase(subRaw);
+ } else {
+ return null;
+ }
+ }
+
+ // Internal class to hold subcommand mappings for parent commands.
+ static class Commands {
+
+ final JedisByteMap commands = new JedisByteMap();
+
+ boolean isEmpty() {
+ return commands.isEmpty();
+ }
+
+ public Commands register(byte[] cmd, CommandMeta command) {
+ commands.put(cmd, command);
+ return this;
+ }
+
+ public boolean containsKey(byte[] command) {
+ return commands.containsKey(command);
+ }
+
+ public CommandMeta getCommand(byte[] command) {
+ return commands.get(command);
+ }
+
+ public Map getCommands() {
+ return commands;
+ }
+ }
+
+ //
+ static class CommandMeta {
+
+ final EnumSet flags;
+
+ final Commands subcommands = new Commands();
+
+ CommandMeta(EnumSet flags) {
+ this.flags = flags;
+ }
+
+ void putSubCommand(byte[] subCommand, CommandMeta subCommandMeta) {
+ this.subcommands.register(subCommand, subCommandMeta);
+ }
+
+ boolean hasSubcommands() {
+ return subcommands != null && !subcommands.isEmpty();
+ }
+
+ EnumSet getFlags() {
+ if (flags == null) {
+ return EMPTY_FLAGS;
}
- // No subcommand found or no second argument, return parent flags
- return subcommandRegistry.parentFlags;
+ return flags;
}
- // Should not reach here, but return empty flags as fallback
- return EMPTY_FLAGS;
+ CommandMeta getSubcommand(byte[] subcommand) {
+ if (subcommands == null) {
+ return null;
+ }
+ return subcommands.getCommand(subcommand);
+ }
+ }
+
+ static public class Builder {
+
+ private final Commands commands = new Commands();
+
+ public Builder register(String name, EnumSet flags) {
+ commands.register(SafeEncoder.encode(name), new CommandMeta(flags));
+ return this;
+ }
+
+ public Builder register(String name, String subcommand, EnumSet flags) {
+ byte[] cmdName = SafeEncoder.encode(name);
+
+ if (!commands.containsKey(cmdName)) {
+ commands.register(SafeEncoder.encode(name), new CommandMeta(EMPTY_FLAGS));
+ }
+
+ byte[] subCmdName = SafeEncoder.encode(subcommand);
+ commands.getCommand(cmdName).putSubCommand(subCmdName, new CommandMeta(flags));
+ return this;
+ }
+
+ public StaticCommandFlagsRegistry build() {
+ return new StaticCommandFlagsRegistry(commands);
+ }
}
}
diff --git a/src/main/java/redis/clients/jedis/StaticCommandFlagsRegistryInitializer.java b/src/main/java/redis/clients/jedis/StaticCommandFlagsRegistryInitializer.java
new file mode 100644
index 0000000000..78b0f3903b
--- /dev/null
+++ b/src/main/java/redis/clients/jedis/StaticCommandFlagsRegistryInitializer.java
@@ -0,0 +1,847 @@
+package redis.clients.jedis;
+
+import java.util.EnumSet;
+import static redis.clients.jedis.StaticCommandFlagsRegistry.EMPTY_FLAGS;
+import static redis.clients.jedis.CommandFlagsRegistry.CommandFlag;
+
+/**
+ * Static implementation of CommandFlagsRegistry. This class is auto-generated by
+ * CommandFlagsRegistryGenerator. DO NOT EDIT MANUALLY.
+ *
+ * Generated from Redis Server:
+ *
+ * Version: 8.2.3
+ * Mode: standalone
+ * Loaded Modules: timeseries, search, bf, vectorset, ReJSON
+ * Generated at: 2025-11-04 20:10:39 EET
+ *
+ */
+final class StaticCommandFlagsRegistryInitializer {
+
+ static void initialize(StaticCommandFlagsRegistry.Builder builder) {
+ builder.register("ACL", EMPTY_FLAGS); // ACL parent command with subcommands
+ builder.register("ACL", "CAT",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "DELUSER",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "DRYRUN",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "GENPASS",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "GETUSER",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "LIST",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "LOAD",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "LOG",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "SAVE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "SETUSER",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "USERS",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("ACL", "WHOAMI",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("OBJECT", EMPTY_FLAGS); // OBJECT parent command with subcommands
+ builder.register("OBJECT", "ENCODING", EnumSet.of(CommandFlag.READONLY));
+ builder.register("OBJECT", "FREQ", EnumSet.of(CommandFlag.READONLY));
+ builder.register("OBJECT", "IDLETIME", EnumSet.of(CommandFlag.READONLY));
+ builder.register("OBJECT", "REFCOUNT", EnumSet.of(CommandFlag.READONLY));
+ builder.register("FUNCTION", EMPTY_FLAGS); // FUNCTION parent command with subcommands
+ builder.register("FUNCTION", "DELETE", EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.WRITE));
+ builder.register("FUNCTION", "DUMP", EnumSet.of(CommandFlag.NOSCRIPT));
+ builder.register("FUNCTION", "FLUSH", EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.WRITE));
+ builder.register("FUNCTION", "KILL", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
+ builder.register("FUNCTION", "LIST", EnumSet.of(CommandFlag.NOSCRIPT));
+ builder.register("FUNCTION", "LOAD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.NOSCRIPT, CommandFlag.WRITE));
+ builder.register("FUNCTION", "RESTORE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.NOSCRIPT, CommandFlag.WRITE));
+ builder.register("FUNCTION", "STATS", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
+ builder.register("CLIENT", EMPTY_FLAGS); // CLIENT parent command with subcommands
+ builder.register("CLIENT", "CACHING",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "GETNAME",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "GETREDIR",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "ID",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "INFO",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "KILL",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "LIST",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "NO-EVICT",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "NO-TOUCH",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "PAUSE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "REPLY",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "SETINFO",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "SETNAME",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "TRACKING",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "TRACKINGINFO",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "UNBLOCK",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLIENT", "UNPAUSE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CONFIG", EMPTY_FLAGS); // CONFIG parent command with subcommands
+ builder.register("CONFIG", "GET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CONFIG", "RESETSTAT",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CONFIG", "REWRITE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CONFIG", "SET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("MODULE", EMPTY_FLAGS); // MODULE parent command with subcommands
+ builder.register("MODULE", "LIST", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT));
+ builder.register("MODULE", "LOAD",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
+ builder.register("MODULE", "LOADEX",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
+ builder.register("MODULE", "UNLOAD",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
+ builder.register("PUBSUB", EMPTY_FLAGS); // PUBSUB parent command with subcommands
+ builder.register("PUBSUB", "CHANNELS",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("PUBSUB", "NUMPAT",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("PUBSUB", "NUMSUB",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("PUBSUB", "SHARDCHANNELS",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("PUBSUB", "SHARDNUMSUB",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("SCRIPT", EMPTY_FLAGS); // SCRIPT parent command with subcommands
+ builder.register("SCRIPT", "DEBUG", EnumSet.of(CommandFlag.NOSCRIPT));
+ builder.register("SCRIPT", "EXISTS", EnumSet.of(CommandFlag.NOSCRIPT));
+ builder.register("SCRIPT", "FLUSH", EnumSet.of(CommandFlag.NOSCRIPT));
+ builder.register("SCRIPT", "KILL", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.NOSCRIPT));
+ builder.register("SCRIPT", "LOAD", EnumSet.of(CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("MEMORY", EMPTY_FLAGS); // MEMORY parent command with subcommands
+ builder.register("MEMORY", "DOCTOR", EMPTY_FLAGS);
+ builder.register("MEMORY", "MALLOC-STATS", EMPTY_FLAGS);
+ builder.register("MEMORY", "PURGE", EMPTY_FLAGS);
+ builder.register("MEMORY", "STATS", EMPTY_FLAGS);
+ builder.register("MEMORY", "USAGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SLOWLOG", EMPTY_FLAGS); // SLOWLOG parent command with subcommands
+ builder.register("SLOWLOG", "GET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("SLOWLOG", "LEN",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("SLOWLOG", "RESET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", EMPTY_FLAGS); // COMMAND parent command with subcommands
+ builder.register("COMMAND", "COUNT", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", "DOCS", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", "GETKEYS", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", "GETKEYSANDFLAGS",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", "INFO", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("COMMAND", "LIST", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("LATENCY", EMPTY_FLAGS); // LATENCY parent command with subcommands
+ builder.register("LATENCY", "DOCTOR",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("LATENCY", "GRAPH",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("LATENCY", "HISTOGRAM",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("LATENCY", "HISTORY",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("LATENCY", "LATEST",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("LATENCY", "RESET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLUSTER", EMPTY_FLAGS); // CLUSTER parent command with subcommands
+ builder.register("CLUSTER", "ADDSLOTS",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "ADDSLOTSRANGE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "BUMPEPOCH",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "COUNT-FAILURE-REPORTS",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
+ builder.register("CLUSTER", "COUNTKEYSINSLOT", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "DELSLOTS",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "DELSLOTSRANGE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "FAILOVER",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "FLUSHSLOTS",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "FORGET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "GETKEYSINSLOT", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "INFO", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "KEYSLOT", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "LINKS", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "MEET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "MYID", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "MYSHARDID", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "NODES", EnumSet.of(CommandFlag.STALE));
+ builder.register("CLUSTER", "REPLICAS", EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
+ builder.register("CLUSTER", "REPLICATE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "RESET",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("CLUSTER", "SAVECONFIG",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "SET-CONFIG-EPOCH",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "SETSLOT",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "SHARDS", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "SLAVES", EnumSet.of(CommandFlag.ADMIN, CommandFlag.STALE));
+ builder.register("CLUSTER", "SLOT-STATS", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("CLUSTER", "SLOTS", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("XINFO", EMPTY_FLAGS); // XINFO parent command with subcommands
+ builder.register("XINFO", "CONSUMERS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XINFO", "GROUPS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XINFO", "STREAM", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XGROUP", EMPTY_FLAGS); // XGROUP parent command with subcommands
+ builder.register("XGROUP", "CREATE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("XGROUP", "CREATECONSUMER",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("XGROUP", "DELCONSUMER", EnumSet.of(CommandFlag.WRITE));
+ builder.register("XGROUP", "DESTROY", EnumSet.of(CommandFlag.WRITE));
+ builder.register("XGROUP", "SETID", EnumSet.of(CommandFlag.WRITE));
+ // 1 command(s) with: admin
+ builder.register("PFSELFTEST", EnumSet.of(CommandFlag.ADMIN));
+
+ // 2 command(s) with: blocking
+ builder.register("WAIT", EnumSet.of(CommandFlag.BLOCKING));
+ builder.register("WAITAOF", EnumSet.of(CommandFlag.BLOCKING));
+
+ // 2 command(s) with: fast
+ builder.register("ASKING", EnumSet.of(CommandFlag.FAST));
+ builder.register("PING", EnumSet.of(CommandFlag.FAST));
+
+ // 41 command(s) with: readonly
+ builder.register("BITCOUNT", EnumSet.of(CommandFlag.READONLY));
+ builder.register("BITPOS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("DUMP", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEODIST", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEOHASH", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEOPOS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEORADIUSBYMEMBER_RO", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEORADIUS_RO", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GEOSEARCH", EnumSet.of(CommandFlag.READONLY));
+ builder.register("GETRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("HGETALL", EnumSet.of(CommandFlag.READONLY));
+ builder.register("HKEYS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("HRANDFIELD", EnumSet.of(CommandFlag.READONLY));
+ builder.register("HSCAN", EnumSet.of(CommandFlag.READONLY));
+ builder.register("HVALS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("KEYS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("LCS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("LINDEX", EnumSet.of(CommandFlag.READONLY));
+ builder.register("LPOS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("LRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("PFCOUNT", EnumSet.of(CommandFlag.READONLY));
+ builder.register("RANDOMKEY", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SCAN", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SDIFF", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SINTER", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SMEMBERS", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SRANDMEMBER", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SSCAN", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SUBSTR", EnumSet.of(CommandFlag.READONLY));
+ builder.register("SUNION", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XPENDING", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("XREVRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZRANDMEMBER", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZRANGEBYLEX", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZRANGEBYSCORE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZREVRANGE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZREVRANGEBYLEX", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZREVRANGEBYSCORE", EnumSet.of(CommandFlag.READONLY));
+ builder.register("ZSCAN", EnumSet.of(CommandFlag.READONLY));
+
+ // 10 command(s) with: write
+ builder.register("DEL", EnumSet.of(CommandFlag.WRITE));
+ builder.register("FLUSHALL", EnumSet.of(CommandFlag.WRITE));
+ builder.register("FLUSHDB", EnumSet.of(CommandFlag.WRITE));
+ builder.register("LREM", EnumSet.of(CommandFlag.WRITE));
+ builder.register("LTRIM", EnumSet.of(CommandFlag.WRITE));
+ builder.register("RENAME", EnumSet.of(CommandFlag.WRITE));
+ builder.register("XTRIM", EnumSet.of(CommandFlag.WRITE));
+ builder.register("ZREMRANGEBYLEX", EnumSet.of(CommandFlag.WRITE));
+ builder.register("ZREMRANGEBYRANK", EnumSet.of(CommandFlag.WRITE));
+ builder.register("ZREMRANGEBYSCORE", EnumSet.of(CommandFlag.WRITE));
+
+ // 2 command(s) with: blocking, write
+ builder.register("BLPOP", EnumSet.of(CommandFlag.BLOCKING, CommandFlag.WRITE));
+ builder.register("BRPOP", EnumSet.of(CommandFlag.BLOCKING, CommandFlag.WRITE));
+
+ // 22 command(s) with: denyoom, write
+ builder.register("BITFIELD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("BITOP", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("COPY", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("GEOADD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("GEOSEARCHSTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("LINSERT", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("LMOVE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("LSET", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("MSET", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("MSETNX", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("PFMERGE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("PSETEX", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("RESTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("RPOPLPUSH", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SDIFFSTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SET", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SETBIT", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SETEX", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SETRANGE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SINTERSTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("SUNIONSTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("ZRANGESTORE", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.WRITE));
+
+ // 35 command(s) with: fast, readonly
+ builder.register("BITFIELD_RO", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("DBSIZE", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("EXISTS", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("EXPIRETIME", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("GET", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("GETBIT", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HEXISTS", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HEXPIRETIME", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HGET", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HLEN", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HMGET", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HPEXPIRETIME", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HPTTL", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HSTRLEN", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("HTTL", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("LLEN", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("LOLWUT", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("MGET", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("PEXPIRETIME", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("PTTL", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("SCARD", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("SISMEMBER", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("SMISMEMBER", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("STRLEN", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("TOUCH", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("TTL", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("TYPE", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("XLEN", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZCARD", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZCOUNT", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZLEXCOUNT", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZMSCORE", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZRANK", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZREVRANK", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+ builder.register("ZSCORE", EnumSet.of(CommandFlag.FAST, CommandFlag.READONLY));
+
+ // 33 command(s) with: fast, write
+ builder.register("EXPIRE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("EXPIREAT", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("GETDEL", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("GETEX", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HDEL", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HEXPIRE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HEXPIREAT", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HGETDEL", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HGETEX", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HPERSIST", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HPEXPIRE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HPEXPIREAT", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("LPOP", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("MOVE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("PERSIST", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("PEXPIRE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("PEXPIREAT", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("RENAMENX", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("RPOP", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SMOVE", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SPOP", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SREM", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SWAPDB", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("UNLINK", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XACK", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XACKDEL", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XAUTOCLAIM", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XCLAIM", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XDEL", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XDELEX", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("ZPOPMAX", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("ZPOPMIN", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("ZREM", EnumSet.of(CommandFlag.FAST, CommandFlag.WRITE));
+
+ // 1 command(s) with: loading, stale
+ builder.register("INFO", EnumSet.of(CommandFlag.LOADING, CommandFlag.STALE));
+
+ // 55 command(s) with: module, readonly
+ builder.register("CMS.INFO", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CMS.QUERY", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.AGGREGATE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.CONFIG", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.CURSOR", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.DICTDUMP", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.EXPLAIN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.EXPLAINCLI", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.GET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.INFO", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.MGET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.PROFILE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.SEARCH", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.SPELLCHECK", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.SUGGET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.SUGLEN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.SYNDUMP", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT.TAGVALS", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("FT._LIST", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.ARRINDEX", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.ARRLEN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.DEBUG", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.GET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.MGET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.OBJKEYS", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.OBJLEN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.RESP", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.STRLEN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("JSON.TYPE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.BYRANK", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.BYREVRANK", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.CDF", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.INFO", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.MAX", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.MIN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.QUANTILE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.RANK", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.REVRANK", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TDIGEST.TRIMMED_MEAN", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TOPK.COUNT", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TOPK.INFO", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TOPK.LIST", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TOPK.QUERY", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.GET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.INFO", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.MGET", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.MRANGE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.MREVRANGE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.QUERYINDEX", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.RANGE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("TS.REVRANGE", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VISMEMBER", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VRANDMEMBER", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VSIM", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("_FT.CONFIG", EnumSet.of(CommandFlag.MODULE, CommandFlag.READONLY));
+
+ // 20 command(s) with: module, write
+ builder.register("FT.ALIASDEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.DEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.DICTDEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.DROP", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.DROPINDEX", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.SUGDEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._ALIASDELIFX", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._DROPIFX", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._DROPINDEXIFX", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.ARRPOP", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.ARRTRIM", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.CLEAR", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.DEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.FORGET", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.NUMINCRBY", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.NUMMULTBY", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.NUMPOWBY", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.DEL", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.DELETERULE", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("VREM", EnumSet.of(CommandFlag.MODULE, CommandFlag.WRITE));
+
+ // 6 command(s) with: movablekeys, readonly
+ builder.register("SINTERCARD", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+ builder.register("SORT_RO", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+ builder.register("ZDIFF", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+ builder.register("ZINTER", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+ builder.register("ZINTERCARD", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+ builder.register("ZUNION", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+
+ // 3 command(s) with: movablekeys, write
+ builder.register("LMPOP", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("MIGRATE", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("ZMPOP", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+
+ // 1 command(s) with: admin, denyoom, write
+ builder.register("PFDEBUG",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.DENYOOM, CommandFlag.WRITE));
+
+ // 2 command(s) with: admin, noscript, no_async_loading
+ builder.register("BGREWRITEAOF",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
+ builder.register("BGSAVE",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.NO_ASYNC_LOADING));
+
+ // 1 command(s) with: admin, noscript, stale
+ builder.register("FAILOVER",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+
+ // 1 command(s) with: asking, denyoom, write
+ builder.register("RESTORE-ASKING",
+ EnumSet.of(CommandFlag.ASKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
+
+ // 2 command(s) with: blocking, denyoom, write
+ builder.register("BLMOVE",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
+ builder.register("BRPOPLPUSH",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.DENYOOM, CommandFlag.WRITE));
+
+ // 2 command(s) with: blocking, fast, write
+ builder.register("BZPOPMAX",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("BZPOPMIN",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.FAST, CommandFlag.WRITE));
+
+ // 1 command(s) with: blocking, movablekeys, readonly
+ builder.register("XREAD",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.READONLY));
+
+ // 3 command(s) with: blocking, movablekeys, write
+ builder.register("BLMPOP",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("BZMPOP",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("XREADGROUP",
+ EnumSet.of(CommandFlag.BLOCKING, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+
+ // 24 command(s) with: denyoom, fast, write
+ builder.register("APPEND",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("DECR", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("DECRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("GETSET",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HINCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HINCRBYFLOAT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HMSET", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HSET", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HSETEX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("HSETNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("INCR", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("INCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("INCRBYFLOAT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("LPUSH", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("LPUSHX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("PFADD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("RPUSH", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("RPUSHX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SADD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("SETNX", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XADD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("XSETID",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("ZADD", EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+ builder.register("ZINCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.FAST, CommandFlag.WRITE));
+
+ // 49 command(s) with: denyoom, module, write
+ builder.register("BF.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("BF.INSERT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("BF.LOADCHUNK",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("BF.MADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("BF.RESERVE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.ADDNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.INSERT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.INSERTNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.LOADCHUNK",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CF.RESERVE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CMS.INCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CMS.INITBYDIM",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CMS.INITBYPROB",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("CMS.MERGE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.ALIASADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.ALIASUPDATE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.ALTER",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.CREATE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.DICTADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.SUGADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.SYNADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT.SYNUPDATE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._ALIASADDIFNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._ALTERIFNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("FT._CREATEIFNX",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.ARRAPPEND",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.ARRINSERT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.MERGE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.MSET",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.SET",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.STRAPPEND",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("JSON.TOGGLE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TDIGEST.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TDIGEST.CREATE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TDIGEST.MERGE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TDIGEST.RESET",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TOPK.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TOPK.INCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TOPK.RESERVE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.ADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.ALTER",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.CREATE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.DECRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.INCRBY",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.MADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("VADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("_FT.SAFEADD",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MODULE, CommandFlag.WRITE));
+
+ // 6 command(s) with: denyoom, movablekeys, write
+ builder.register("GEORADIUS",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("GEORADIUSBYMEMBER",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("SORT",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("ZDIFFSTORE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("ZINTERSTORE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+ builder.register("ZUNIONSTORE",
+ EnumSet.of(CommandFlag.DENYOOM, CommandFlag.MOVABLEKEYS, CommandFlag.WRITE));
+
+ // 6 command(s) with: fast, loading, stale
+ builder.register("ECHO", EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("LASTSAVE",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("READONLY",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("READWRITE",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("SELECT",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+ builder.register("TIME", EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.STALE));
+
+ // 19 command(s) with: fast, module, readonly
+ builder.register("BF.CARD",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("BF.DEBUG",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("BF.EXISTS",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("BF.INFO",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("BF.MEXISTS",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("BF.SCANDUMP",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.COMPACT",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.COUNT",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.DEBUG",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.EXISTS",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.INFO",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.MEXISTS",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("CF.SCANDUMP",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VCARD",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VDIM",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VEMB",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VGETATTR",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VINFO",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+ builder.register("VLINKS",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.READONLY));
+
+ // 3 command(s) with: fast, module, write
+ builder.register("CF.DEL", EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("TS.CREATERULE",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
+ builder.register("VSETATTR",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.MODULE, CommandFlag.WRITE));
+
+ // 3 command(s) with: module, noscript, readonly
+ builder.register("SEARCH.CLUSTERREFRESH",
+ EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
+ builder.register("TIMESERIES.CLUSTERSET",
+ EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
+ builder.register("TIMESERIES.REFRESHCLUSTER",
+ EnumSet.of(CommandFlag.MODULE, CommandFlag.NOSCRIPT, CommandFlag.READONLY));
+
+ // 2 command(s) with: admin, loading, noscript, stale
+ builder.register("DEBUG",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("MONITOR",
+ EnumSet.of(CommandFlag.ADMIN, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+
+ // 3 command(s) with: admin, noscript, no_async_loading, no_multi
+ builder.register("PSYNC", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
+ builder.register("SAVE", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
+ builder.register("SYNC", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_ASYNC_LOADING, CommandFlag.NO_MULTI));
+
+ // 2 command(s) with: admin, noscript, no_async_loading, stale
+ builder.register("REPLICAOF", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+ builder.register("SLAVEOF", EnumSet.of(CommandFlag.ADMIN, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_ASYNC_LOADING, CommandFlag.STALE));
+
+ // 1 command(s) with: fast, loading, noscript, stale
+ builder.register("ROLE",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+
+ // 2 command(s) with: fast, loading, pubsub, stale
+ builder.register("PUBLISH",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("SPUBLISH",
+ EnumSet.of(CommandFlag.FAST, CommandFlag.LOADING, CommandFlag.PUBSUB, CommandFlag.STALE));
+
+ // 2 command(s) with: loading, module, noscript, readonly
+ builder.register("SEARCH.CLUSTERINFO", EnumSet.of(CommandFlag.LOADING, CommandFlag.MODULE,
+ CommandFlag.NOSCRIPT, CommandFlag.READONLY));
+ builder.register("SEARCH.CLUSTERSET", EnumSet.of(CommandFlag.LOADING, CommandFlag.MODULE,
+ CommandFlag.NOSCRIPT, CommandFlag.READONLY));
+
+ // 6 command(s) with: loading, noscript, pubsub, stale
+ builder.register("PSUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("PUNSUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("SSUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("SUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("SUNSUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+ builder.register("UNSUBSCRIBE",
+ EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.PUBSUB, CommandFlag.STALE));
+
+ // 1 command(s) with: loading, noscript, skip_slowlog, stale
+ builder.register("EXEC", EnumSet.of(CommandFlag.LOADING, CommandFlag.NOSCRIPT,
+ CommandFlag.SKIP_SLOWLOG, CommandFlag.STALE));
+
+ // 1 command(s) with: admin, allow_busy, loading, noscript, stale
+ builder.register("REPLCONF", EnumSet.of(CommandFlag.ADMIN, CommandFlag.ALLOW_BUSY,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+
+ // 4 command(s) with: allow_busy, fast, loading, noscript, stale
+ builder.register("DISCARD", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("MULTI", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("UNWATCH", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+ builder.register("WATCH", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.STALE));
+
+ // 3 command(s) with: movablekeys, noscript, no_mandatory_keys, skip_monitor, stale
+ builder.register("EVAL", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+ builder.register("EVALSHA", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+ builder.register("FCALL", EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT,
+ CommandFlag.NO_MANDATORY_KEYS, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+
+ // 1 command(s) with: admin, allow_busy, loading, noscript, no_multi, stale
+ builder.register("SHUTDOWN", EnumSet.of(CommandFlag.ADMIN, CommandFlag.ALLOW_BUSY,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_MULTI, CommandFlag.STALE));
+
+ // 4 command(s) with: allow_busy, fast, loading, noscript, no_auth, stale
+ builder.register("AUTH", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
+ builder.register("HELLO", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
+ builder.register("QUIT", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
+ builder.register("RESET", EnumSet.of(CommandFlag.ALLOW_BUSY, CommandFlag.FAST,
+ CommandFlag.LOADING, CommandFlag.NOSCRIPT, CommandFlag.NO_AUTH, CommandFlag.STALE));
+
+ // 3 command(s) with: movablekeys, noscript, no_mandatory_keys, readonly, skip_monitor, stale
+ builder.register("EVALSHA_RO",
+ EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS,
+ CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+ builder.register("EVAL_RO",
+ EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS,
+ CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+ builder.register("FCALL_RO",
+ EnumSet.of(CommandFlag.MOVABLEKEYS, CommandFlag.NOSCRIPT, CommandFlag.NO_MANDATORY_KEYS,
+ CommandFlag.READONLY, CommandFlag.SKIP_MONITOR, CommandFlag.STALE));
+
+ }
+
+}
diff --git a/src/main/java/redis/clients/jedis/UnifiedJedis.java b/src/main/java/redis/clients/jedis/UnifiedJedis.java
index 6eb88f237e..2f5103c0c8 100644
--- a/src/main/java/redis/clients/jedis/UnifiedJedis.java
+++ b/src/main/java/redis/clients/jedis/UnifiedJedis.java
@@ -172,21 +172,21 @@ public UnifiedJedis(Connection connection) {
@Deprecated
public UnifiedJedis(ClusterConnectionProvider provider, int maxAttempts, Duration maxTotalRetriesDuration) {
- this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, new StaticCommandFlagsRegistry()), provider,
+ this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, StaticCommandFlagsRegistry.registry()), provider,
new ClusterCommandObjects());
}
@Deprecated
protected UnifiedJedis(ClusterConnectionProvider provider, int maxAttempts, Duration maxTotalRetriesDuration,
RedisProtocol protocol) {
- this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, new StaticCommandFlagsRegistry()), provider,
+ this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, StaticCommandFlagsRegistry.registry()), provider,
new ClusterCommandObjects(), protocol);
}
@Deprecated
protected UnifiedJedis(ClusterConnectionProvider provider, int maxAttempts, Duration maxTotalRetriesDuration,
RedisProtocol protocol, Cache cache) {
- this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, new StaticCommandFlagsRegistry()), provider,
+ this(new ClusterCommandExecutor(provider, maxAttempts, maxTotalRetriesDuration, StaticCommandFlagsRegistry.registry()), provider,
new ClusterCommandObjects(), protocol, cache);
}
diff --git a/src/main/java/redis/clients/jedis/builders/ClusterClientBuilder.java b/src/main/java/redis/clients/jedis/builders/ClusterClientBuilder.java
index 526bffd904..fd211a2ae6 100644
--- a/src/main/java/redis/clients/jedis/builders/ClusterClientBuilder.java
+++ b/src/main/java/redis/clients/jedis/builders/ClusterClientBuilder.java
@@ -105,7 +105,7 @@ protected ConnectionProvider createDefaultConnectionProvider() {
* @return CommandFlagsRegistry
*/
protected CommandFlagsRegistry createDefaultCommandFlagsRegistry() {
- return new StaticCommandFlagsRegistry();
+ return StaticCommandFlagsRegistry.registry();
}
@Override
diff --git a/src/main/java/redis/clients/jedis/executors/ClusterCommandExecutor.java b/src/main/java/redis/clients/jedis/executors/ClusterCommandExecutor.java
index f6169c65ac..4e7b3fe277 100644
--- a/src/main/java/redis/clients/jedis/executors/ClusterCommandExecutor.java
+++ b/src/main/java/redis/clients/jedis/executors/ClusterCommandExecutor.java
@@ -31,7 +31,7 @@ public class ClusterCommandExecutor implements CommandExecutor {
@Deprecated
public ClusterCommandExecutor(ClusterConnectionProvider provider, int maxAttempts,
Duration maxTotalRetriesDuration) {
- this(provider, maxAttempts, maxTotalRetriesDuration, new StaticCommandFlagsRegistry());
+ this(provider, maxAttempts, maxTotalRetriesDuration, StaticCommandFlagsRegistry.registry());
}
public ClusterCommandExecutor(ClusterConnectionProvider provider, int maxAttempts,
diff --git a/src/test/java/redis/clients/jedis/ClusterCommandExecutorTest.java b/src/test/java/redis/clients/jedis/ClusterCommandExecutorTest.java
index fa6f88b69e..955dfff642 100644
--- a/src/test/java/redis/clients/jedis/ClusterCommandExecutorTest.java
+++ b/src/test/java/redis/clients/jedis/ClusterCommandExecutorTest.java
@@ -38,7 +38,7 @@ public class ClusterCommandExecutorTest {
public void runSuccessfulExecute() {
ClusterConnectionProvider connectionHandler = mock(ClusterConnectionProvider.class);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 10, Duration.ZERO,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
return (T) "foo";
@@ -55,7 +55,7 @@ protected void sleep(long ignored) {
public void runFailOnFirstExecSuccessOnSecondExec() {
ClusterConnectionProvider connectionHandler = mock(ClusterConnectionProvider.class);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 10, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
boolean isFirstCall = true;
@Override
@@ -82,7 +82,7 @@ public void runAlwaysFailing() {
ClusterConnectionProvider connectionHandler = mock(ClusterConnectionProvider.class);
final LongConsumer sleep = mock(LongConsumer.class);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 3, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
throw new JedisConnectionException("Connection failed");
@@ -113,7 +113,7 @@ public void runMovedSuccess() {
ClusterConnectionProvider connectionHandler = mock(ClusterConnectionProvider.class);
final HostAndPort movedTarget = new HostAndPort(null, 0);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 10, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
boolean isFirstCall = true;
@Override
@@ -151,7 +151,7 @@ public void runAskSuccess() {
when(connectionHandler.getConnection(askTarget)).thenReturn(connection);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 10, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
boolean isFirstCall = true;
@Override
@@ -205,7 +205,7 @@ public void runMovedThenAllNodesFailing() {
final LongConsumer sleep = mock(LongConsumer.class);
final HostAndPort movedTarget = new HostAndPort(null, 0);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 5, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
if (redirecter == connection) {
@@ -273,7 +273,7 @@ public void runMasterFailingReplicaRecovering() {
final AtomicLong totalSleepMs = new AtomicLong();
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 5, ONE_SECOND,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
@@ -311,7 +311,7 @@ public void runRethrowsJedisNoReachableClusterNodeException() {
JedisClusterOperationException.class);
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 10,
- Duration.ZERO, new StaticCommandFlagsRegistry()) {
+ Duration.ZERO, StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
return null;
@@ -333,7 +333,7 @@ public void runStopsRetryingAfterTimeout() {
//final LongConsumer sleep = mock(LongConsumer.class);
final AtomicLong totalSleepMs = new AtomicLong();
ClusterCommandExecutor testMe = new ClusterCommandExecutor(connectionHandler, 3, Duration.ZERO,
- new StaticCommandFlagsRegistry()) {
+ StaticCommandFlagsRegistry.registry()) {
@Override
public T execute(Connection connection, CommandObject commandObject) {
try {
diff --git a/src/test/java/redis/clients/jedis/StaticCommandFlagsRegistryTest.java b/src/test/java/redis/clients/jedis/StaticCommandFlagsRegistryTest.java
index a6aaa9c0e0..122ed6272b 100644
--- a/src/test/java/redis/clients/jedis/StaticCommandFlagsRegistryTest.java
+++ b/src/test/java/redis/clients/jedis/StaticCommandFlagsRegistryTest.java
@@ -22,7 +22,7 @@ public class StaticCommandFlagsRegistryTest {
@BeforeEach
public void setUp() {
- registry = new StaticCommandFlagsRegistry();
+ registry = StaticCommandFlagsRegistry.registry();
}
/**
diff --git a/src/test/java/redis/clients/jedis/codegen/CommandFlagsRegistryGenerator.java b/src/test/java/redis/clients/jedis/codegen/CommandFlagsRegistryGenerator.java
index ea2eb24c7e..009ef07d05 100644
--- a/src/test/java/redis/clients/jedis/codegen/CommandFlagsRegistryGenerator.java
+++ b/src/test/java/redis/clients/jedis/codegen/CommandFlagsRegistryGenerator.java
@@ -34,7 +34,7 @@
*/
public class CommandFlagsRegistryGenerator {
- private static final String JAVA_FILE = "src/main/java/redis/clients/jedis/StaticCommandFlagsRegistry.java";
+ private static final String JAVA_FILE = "src/main/java/redis/clients/jedis/StaticCommandFlagsRegistryInitializer.java";
private static final String BACKUP_JSON_FILE = "redis_commands_flags.json";
private final String redisHost;
@@ -316,10 +316,8 @@ private String generateRegistryClass(Map> flagCombinations
// Package and imports
sb.append("package redis.clients.jedis;\n\n");
sb.append("import java.util.EnumSet;\n");
- sb.append("import redis.clients.jedis.args.Rawable;\n");
- sb.append("import redis.clients.jedis.commands.ProtocolCommand;\n");
- sb.append("import redis.clients.jedis.util.JedisByteMap;\n");
- sb.append("import redis.clients.jedis.util.SafeEncoder;\n\n");
+ sb.append("import static redis.clients.jedis.StaticCommandFlagsRegistry.EMPTY_FLAGS;\n");
+ sb.append("import static redis.clients.jedis.CommandFlagsRegistry.CommandFlag;\n");
// Class javadoc
sb.append("/**\n");
@@ -344,42 +342,10 @@ private String generateRegistryClass(Map> flagCombinations
}
sb.append(" */\n");
- sb.append("public class StaticCommandFlagsRegistry implements CommandFlagsRegistry {\n\n");
-
- // Empty flags constant
- sb.append(" // Empty flags constant for commands with no flags\n");
- sb.append(
- " private static final EnumSet EMPTY_FLAGS = EnumSet.noneOf(CommandFlag.class);\n\n");
-
- // Command flags registry map - now hierarchical and using byte arrays for faster lookup
- sb.append(" // Hierarchical command flags registry using byte arrays as keys\n");
- sb.append(
- " // Maps parent command names (as uppercase byte arrays) to their flags and subcommands\n");
- sb.append(
- " // For simple commands (no subcommands), the parent command maps directly to flags\n");
- sb.append(
- " // For parent commands with subcommands, the parent maps to a SubcommandRegistry\n");
- sb.append(
- " // Using JedisByteMap avoids String conversion during lookup, providing ~2.5x performance improvement\n");
- sb.append(
- " private static final JedisByteMap COMMAND_FLAGS_REGISTRY = new JedisByteMap<>();\n\n");
-
- // SubcommandRegistry inner class
- sb.append(" /**\n");
- sb.append(" * Internal class to hold subcommand mappings for parent commands.\n");
- sb.append(" * Uses JedisByteMap for faster subcommand lookup without String conversion.\n");
- sb.append(" */\n");
- sb.append(" private static class SubcommandRegistry {\n");
- sb.append(" final EnumSet parentFlags;\n");
- sb.append(" final JedisByteMap> subcommands;\n\n");
- sb.append(" SubcommandRegistry(EnumSet parentFlags) {\n");
- sb.append(" this.parentFlags = parentFlags;\n");
- sb.append(" this.subcommands = new JedisByteMap<>();\n");
- sb.append(" }\n");
- sb.append(" }\n\n");
+ sb.append("final class StaticCommandFlagsRegistryInitializer {\n\n");
// Static initializer block
- sb.append(" static {\n");
+ sb.append(" static void initialize(StaticCommandFlagsRegistry.Builder builder) {\n");
// Organize commands into parent commands and simple commands
Map> parentCommands = new LinkedHashMap<>();
@@ -416,15 +382,11 @@ private String generateRegistryClass(Map> flagCombinations
// Generate parent command registries
for (String parent : knownParents) {
+ sb.append(String.format("builder.register(\"%s\", EMPTY_FLAGS);", parent));
+
Map subcommands = parentCommands.get(parent);
if (subcommands != null && !subcommands.isEmpty()) {
sb.append(String.format(" // %s parent command with subcommands\n", parent));
-
- // Determine parent flags (use EMPTY_FLAGS for now, could be enhanced)
- sb.append(String.format(
- " SubcommandRegistry %sRegistry = new SubcommandRegistry(EMPTY_FLAGS);\n",
- parent.toLowerCase()));
-
// Add subcommands
List sortedSubcommands = new ArrayList<>(subcommands.keySet());
Collections.sort(sortedSubcommands);
@@ -432,14 +394,9 @@ private String generateRegistryClass(Map> flagCombinations
for (String subcommand : sortedSubcommands) {
FlagSet flagSet = subcommands.get(subcommand);
String enumSetExpr = createEnumSetExpression(flagSet.flags);
- sb.append(
- String.format(" %sRegistry.subcommands.put(SafeEncoder.encode(\"%s\"), %s);\n",
- parent.toLowerCase(), subcommand, enumSetExpr));
+ sb.append(String.format("builder.register(\"%s\", \"%s\", %s);\n", parent, subcommand,
+ enumSetExpr));
}
-
- sb.append(String.format(
- " COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode(\"%s\"), %sRegistry);\n\n", parent,
- parent.toLowerCase()));
}
}
@@ -472,97 +429,14 @@ private String generateRegistryClass(Map> flagCombinations
// Add registry entries using SafeEncoder.encode()
for (String command : commands) {
- sb.append(String.format(" COMMAND_FLAGS_REGISTRY.put(SafeEncoder.encode(\"%s\"), %s);\n",
- command, enumSetExpr));
+ sb.append(String.format("builder.register(\"%s\", %s);\n", command, enumSetExpr));
}
sb.append("\n");
}
+ // Close initializer block
sb.append(" }\n\n");
- // getFlags method implementation
- sb.append(" /**\n");
- sb.append(" * Get the flags for a given command. Flags are looked up from a static\n");
- sb.append(
- " * registry based on the command arguments. This approach significantly reduces\n");
- sb.append(" * memory usage by sharing flag instances across all CommandObject instances.\n");
- sb.append(" * \n");
- sb.append(
- " * For commands with subcommands (e.g., FUNCTION LOAD, ACL SETUSER), this method\n");
- sb.append(" * implements a hierarchical lookup strategy:\n");
- sb.append(" *
\n");
- sb.append(
- " * First, retrieve the parent command using CommandArguments.getCommand() \n");
- sb.append(
- " * Check if this is a parent command (has subcommands in the registry) \n");
- sb.append(" * If it is a parent command, attempt to get the child/subcommand by:\n");
- sb.append(" * \n");
- sb.append(
- " * Extracting the second argument from the CommandArguments object \n");
- sb.append(
- " * Matching this second argument against the child items of the parent command \n");
- sb.append(" * \n");
- sb.append(" * \n");
- sb.append(
- " * Return the appropriate flags based on whether a child command was found or just use the parent command's flags \n");
- sb.append(" * \n");
- sb.append(" *\n");
- sb.append(
- " * @param commandArguments the command arguments containing the command and its parameters\n");
- sb.append(
- " * @return EnumSet of CommandFlag for this command, or empty set if command has no flags\n");
- sb.append(" */\n");
- sb.append(" @Override\n");
- sb.append(" public EnumSet getFlags(CommandArguments commandArguments) {\n");
- sb.append(" // Get the parent command\n");
- sb.append(" ProtocolCommand cmd = commandArguments.getCommand();\n");
- sb.append(" byte[] raw = cmd.getRaw();\n");
- sb.append(" \n");
- sb.append(
- " // Convert to uppercase using SafeEncoder utility (faster than String.toUpperCase())\n");
- sb.append(" byte[] uppercaseBytes = SafeEncoder.toUpperCase(raw);\n");
- sb.append("\n");
- sb.append(" // Look up the parent command in the registry using byte array key\n");
- sb.append(" Object registryEntry = COMMAND_FLAGS_REGISTRY.get(uppercaseBytes);\n");
- sb.append("\n");
- sb.append(" if (registryEntry == null) {\n");
- sb.append(" // Command not found in registry\n");
- sb.append(" return EMPTY_FLAGS;\n");
- sb.append(" }\n");
- sb.append("\n");
- sb.append(
- " // Check if this is a simple command (EnumSet) or a parent command with subcommands (SubcommandRegistry)\n");
- sb.append(" if (registryEntry instanceof EnumSet) {\n");
- sb.append(" // Simple command without subcommands\n");
- sb.append(" return (EnumSet) registryEntry;\n");
- sb.append(" } else if (registryEntry instanceof SubcommandRegistry) {\n");
- sb.append(" // Parent command with subcommands\n");
- sb.append(
- " SubcommandRegistry subcommandRegistry = (SubcommandRegistry) registryEntry;\n");
- sb.append("\n");
- sb.append(" // Try to extract the subcommand from the second argument\n");
- sb.append(" if (commandArguments.size() > 1) {\n");
- sb.append(" Rawable secondArg = commandArguments.get(1);\n");
- sb.append(" byte[] subRaw = secondArg.getRaw();\n");
- sb.append(" \n");
- sb.append(" // Convert to uppercase using SafeEncoder utility\n");
- sb.append(" byte[] subUppercaseBytes = SafeEncoder.toUpperCase(subRaw);\n");
- sb.append(" \n");
- sb.append(
- " EnumSet subcommandFlags = subcommandRegistry.subcommands.get(subUppercaseBytes);\n");
- sb.append(" if (subcommandFlags != null) {\n");
- sb.append(" return subcommandFlags;\n");
- sb.append(" }\n");
- sb.append(" }\n");
- sb.append("\n");
- sb.append(" // No subcommand found or no second argument, return parent flags\n");
- sb.append(" return subcommandRegistry.parentFlags;\n");
- sb.append(" }\n");
- sb.append("\n");
- sb.append(" // Should not reach here, but return empty flags as fallback\n");
- sb.append(" return EMPTY_FLAGS;\n");
- sb.append(" }\n");
-
// Close class
sb.append("}\n");