client命令目前支持client list, setname, getname, kill四个sub command.
client list列出所有连接到该proxy的所有user connection,字段和redis内核一样,id, age, idle, addr, fd, name, db, multi, omem, cmd字段和redis内核表达的意思一样。sub, psub在proxy层没作区分,要么都为1,要么都为0。qbuf, qbuf-free, obl, oll字段目前没有意义。
用法和redis内核一致
kill命令目前支持两种形式:
集群规格中,这几个命令不再要求所有key必须在同一个slot中,使用和主从版没区别。
事务之前没有使用watch命令并且事务中都是单key命令场景不再要求所有key必须在同一个slot中,使用方式和直连redis完全一致,其他场景要求事务中所有命令的所有key必须在同一个slot中。
多key命令列表:
不允许在事务中使用的命令列表:
redis原生的info命令中最多可以带一个可选的section,如下所示:
目前阿里云redis集群规格中,部分命令限制所有key必须在同一个slot中,proxy新增info key命令查询key所属的slot,方便用户查询某些key是否在同一个slot中。
最新版的redis-proxy已经支持monitor命令,他会把所有节点上的monitor结果汇聚再吐出来,集群模式也可以使用imonitor,读写分离可以使用rimonitor来对特定节点执行monitor。
最新版的redis-proxy已经支持scan命令,集群模式下仍然可以使用iscan命令来扫描特定节点。
需要注意的是,低版本jedis(<2.4.0)scan的实现中使用了int作为cursor,直接可能会扫描不到所有的数据。
阿里云redis-proxy针对集群规格扩展了若干命令,方便集群用户的使用。
用于查某个key所在的slot和db,使用格式相对原生info命令作了扩展,增加一个sub command,redis-proxy把key后面的参数按照内部路由规则计算该参数所属的slot和db节点。
注意:1.线上旧版本可能出现info key显示出来的node index和实例拓扑图的node index不一致,最新版本已经回复。用户可以通过info key命令来判断某些key是否在同一个slot或者db节点中。2.info key中显示的node 是指集群规格下后端的物理节点,和select命令中的db不是一个概念。
iinfo命令是阿里云redis-proxy新增命令,用法类似info,用于在指定的redis节点上执行info命令。用法:
直接执行info命令,redis-proxy做了一些处理(redis-proxy把info转发给所有redis节点,然后对返回的结果有些字段取最大值,有些取平均值),如果要了解某个redis的info可以使用iinfo命令,db_idx的范围是[0, nodecount),nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。
和iinfo命令类似也是阿里云redis-proxy新增命令,但使用在读写分离的模式下。用法中增加了一个readonly slave的idx,用于指定在第几个readonly slave上执行info命令。在读写分离集群中可以用来在指定readonly slave上执行info命令。如果在非读写分离集群中使用,会返回错误。
用法:
iscan命令是阿里云redis-proxy新增命令,集群模式下可以在指定的db节点上执行scan命令。在scan命令的基础上扩展了一个参数用于指定db_idx, db_idx的范围是[0, nodecount), nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。
imonitor也是阿里云redis-proxy新增命令,和iinfo, iscan类似,在monitor的基础上新增一个参数指定monitor执行的db_idx,db_idx的范围是[0, nodecount), nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。
rimonitor是阿里云redis-proxy自研命令,和riinfo类似,用于读写分离场景下,在指定的shard里的指定只读从库上执行monitor命令。
imonitor和rimonitor自研命令请使用telnet执行