Redis插件ACL查询命令为什么是使用HGETALL?

### 环境信息

### 问题描述

我是第一次使用EMQX,我在了解将Redis用作ACL插件时,看到配置文件[File: etc/emqx_auth_redis.conf]中有这么一段:

## ACL query command.

##

## Value: Redis cmd

##

## Variables:

## - %u: username

## - %c: clientid

auth.redis.acl_cmd = HGETALL mqtt_acl:%u

我很好奇为什么不使用 HGET mqtt_acl:%u %t,HGET的性能比HGETALL应该更佳。

经过测试,我发现此处占位符 %t 不支持,在其他配置中,%t用来代指topic。

期待大家能为我解惑,感谢。

HGETALL的性能,受到key的数量影响,mqtt的认证业务中,仅有两种key, clientid & username,所以查询性能不会收到什么影响,并且通过一次查询,能获取全部的信息,减少了查询次数,效率会更高。

不支持 %t 的问题,现在我们还没有遇到需要针对某个 clientid + 某个username + 某个topic 三个查询条件一起的场景,一般都是查询所有的acl规则作为整体,然后在有限的列表结果中查找需要的信息。

如果你确实需要按照topic查询,方便分享一下你的业务场景吗?我们目前的客户还没有遇到过,并且欢迎给我们提交pr