阿里云redis-proxy命令支持

client命令

client命令目前支持client list, setname, getname, kill四个sub command.

client list

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字段目前没有意义。

client setname

用法和redis内核一致

client getname

用法和redis内核一致

client kill

kill命令目前支持两种形式:

client kill ip:port
client kill addr ip:port

sunion, sdiff, sinter, sunionstore, sdiffstore, sinterstore, zinterstore, zunionstore

集群规格中,这几个命令不再要求所有key必须在同一个slot中,使用和主从版没区别。

事务

事务之前没有使用watch命令并且事务中都是单key命令场景不再要求所有key必须在同一个slot中,使用方式和直连redis完全一致,其他场景要求事务中所有命令的所有key必须在同一个slot中。
多key命令列表:

DEL, SORT, MGET, MSET, BITOP, EXISTS, MSETNX, RENAME, RENAMENX, BLPOP, BRPOP, RPOPLPUSH, BRPOPLPUSH, SMOVE, SUNION, SINTER, SDIFF, SUNIONSTORE, SINTERSTORE, SDIFFSTORE, ZUNIONSTORE, ZINTERSTORE, PFMERGE, PFCOUNT

不允许在事务中使用的命令列表:

WATCH, UNWATCH, RANDOMKEY, KEYS, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, SCRIPT, EVAL, EVALSHA, SCAN, ISCAN, DBSIZE, ADMINAUTH, AUTH, PING, ECHO, FLUSHDB, FLUSHALL, MONITOR, IMONITOR, RIMONITOR, INFO, IINFO, RIINFO, CONFIG, SLOWLOG, TIME, CLIENT

info命令

redis原生的info命令中最多可以带一个可选的section,如下所示:

info [section]

目前阿里云redis集群规格中,部分命令限制所有key必须在同一个slot中,proxy新增info key命令查询key所属的slot,方便用户查询某些key是否在同一个slot中。

monitor命令

最新版的redis-proxy已经支持monitor命令,他会把所有节点上的monitor结果汇聚再吐出来,集群模式也可以使用imonitor,读写分离可以使用rimonitor来对特定节点执行monitor。

scan命令

最新版的redis-proxy已经支持scan命令,集群模式下仍然可以使用iscan命令来扫描特定节点。
需要注意的是,低版本jedis(<2.4.0)scan的实现中使用了int作为cursor,直接可能会扫描不到所有的数据。

阿里云redis自研命令

阿里云redis-proxy针对集群规格扩展了若干命令,方便集群用户的使用。

info key user_key

用于查某个key所在的slot和db,使用格式相对原生info命令作了扩展,增加一个sub command,redis-proxy把key后面的参数按照内部路由规则计算该参数所属的slot和db节点。

127.0.0.1:6379> info key test_key
slot:15118 node_index:0

注意:1.线上旧版本可能出现info key显示出来的node index和实例拓扑图的node index不一致,最新版本已经回复。用户可以通过info key命令来判断某些key是否在同一个slot或者db节点中。2.info key中显示的node 是指集群规格下后端的物理节点,和select命令中的db不是一个概念。

iinfo命令

iinfo命令是阿里云redis-proxy新增命令,用法类似info,用于在指定的redis节点上执行info命令。用法:

iinfo db_idx [section]

直接执行info命令,redis-proxy做了一些处理(redis-proxy把info转发给所有redis节点,然后对返回的结果有些字段取最大值,有些取平均值),如果要了解某个redis的info可以使用iinfo命令,db_idx的范围是[0, nodecount),nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。

riinfo命令

和iinfo命令类似也是阿里云redis-proxy新增命令,但使用在读写分离的模式下。用法中增加了一个readonly slave的idx,用于指定在第几个readonly slave上执行info命令。在读写分离集群中可以用来在指定readonly slave上执行info命令。如果在非读写分离集群中使用,会返回错误。
用法:

riinfo db_idx ro_slave_idx [section]

iscan

iscan命令是阿里云redis-proxy新增命令,集群模式下可以在指定的db节点上执行scan命令。在scan命令的基础上扩展了一个参数用于指定db_idx, db_idx的范围是[0, nodecount), nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。

iscan db_idx cursor [MATCH pattern] [COUNT count]

imonitor

imonitor也是阿里云redis-proxy新增命令,和iinfo, iscan类似,在monitor的基础上新增一个参数指定monitor执行的db_idx,db_idx的范围是[0, nodecount), nodecount可以通过info命令获取或者从控制台上查看实例拓扑图。

imonitor db_idx

rimonitor

rimonitor是阿里云redis-proxy自研命令,和riinfo类似,用于读写分离场景下,在指定的shard里的指定只读从库上执行monitor命令。

rimonitor db_idx ro_slave_idx

imonitor和rimonitor自研命令请使用telnet执行

上一篇:阿里云的“飞天加速计划·高校学生在家实践”活动感受


下一篇:8 个必备的PHP功能开发