阿里云redis-proxy命令支持

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介: 阿里云集群模式下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执行

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
13天前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
44 2
|
29天前
|
存储 消息中间件 NoSQL
Redis命令详解以及存储原理
Redis命令详解以及存储原理
|
2月前
|
存储 缓存 NoSQL
Redis 全局通用命令整理
Redis 全局通用命令整理
55 10
|
24天前
|
SQL 缓存 NoSQL
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?
|
24天前
|
缓存 监控 NoSQL
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
|
25天前
|
缓存 NoSQL 测试技术
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
|
2月前
|
存储 JSON NoSQL
Redis常见命令大全
【7月更文挑战第30天】
17 3
|
2月前
|
NoSQL Redis 索引
Redis 中ZSET数据类型命令使用及对应场景总结
Redis 中ZSET数据类型命令使用及对应场景总结
46 2
|
27天前
|
缓存 NoSQL Redis
Redis AOF重写问题之正常响应用户命令如何解决
Redis AOF重写问题之正常响应用户命令如何解决