predixy icon indicating copy to clipboard operation
predixy copied to clipboard

nc模拟pipeline操作redis 通过predixy 1.0.5代理后 错误ERR unknown command '...'

Open nAnderYang opened this issue 3 years ago • 2 comments

问题: redis通过代理后pipeline只生效第一条指令

演示环境 OS centos7 7.8 172.16.1.144 单节点

 # ./redis-server -v
Redis server v=5.0.9 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=599348814c01830d

172.16.1.147 redis cluster+predixy 1.0.5

# /opt/predixy/bin/predixy -v
/opt/predixy/bin/predixy predixy-1.0.5
#  ./redis-server -v
Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=157afedae0982ca6

单节点

# printf "AUTH MyPASSW@0d\r\nSET TS:TSKEY 180\r\n"|nc 172.16.1.144 6379
+OK
+OK
#  printf "AUTH MyPASSW@0d\r\nGET TS:TSKEY\r\n"|nc 172.16.1.144 6379
+OK
$3
180

Cluster + Predixy

# printf "AUTH MyPASSW@0d\r\nSET TS:TSKEY 180\r\n"|nc 172.16.1.147 6379
+OK
-ERR unknown command 'set'
# printf "AUTH MyPASSW@0d\r\nGET TS:TSKEY\r\n"|nc 172.16.1.147 6379
+OK
-ERR unknown command 'get'

集群部署在172.16.1.147端口7000-7005

]# printf "AUTH MyPASSW@0d\r\nSET TS:TSKEY 180\r\n"|nc 172.16.1.147 7000
-MOVED 8966 172.16.1.147:7004
# printf "AUTH MyPASSW@0d\r\nSET TS:TSKEY 180\r\n"|nc 172.16.1.147 7004
+OK
# printf "AUTH MyPASSW@0d\r\nGET TS:TSKEY\r\n"|nc 172.16.1.147 7004
$3
180
#  printf "AUTH MyPASSW@0d\r\nGET TS:TSKEY\r\n"|nc 172.16.1.147 6379
+OK
-ERR unknown command 'get'

原本redis是支持的 为什么使用predixy后反而不受支持了呢?pipeline不受支持吗?

nAnderYang avatar Mar 31 '21 08:03 nAnderYang

# printf "AUTH MyPASSW@0d\r\nSET TS:KEY1 1\r\nSET TS:KEY2 2\r\nSET TS:KEY3 3\r\nGET TS:KEY1\r\nGET TS:KEY2\r\nGET TS:KEY3\r\nDEL TS:KEY1\r\nDEL TS:KEY2\r\nDEL TS:KEY3\r\n"|nc 172.16.1.144 6379
+OK
+OK
+OK
+OK
$1
1
$1
2
$1
3
:1
:1
:1
# printf "AUTH MyPASSW@0d\r\nSET TS:KEY1 1\r\nSET TS:KEY2 2\r\nSET TS:KEY3 3\r\nGET TS:KEY1\r\nGET TS:KEY2\r\nGET TS:KEY3\r\nDEL TS:KEY1\r\nDEL TS:KEY2\r\nDEL TS:KEY3\r\n"|nc 172.16.1.147 6379
+OK
-ERR unknown command 'set'
-ERR unknown command 'set'
-ERR unknown command 'set'
-ERR unknown command 'get'
-ERR unknown command 'get'
-ERR unknown command 'get'
-ERR unknown command 'del'
-ERR unknown command 'del'
-ERR unknown command 'del'

nAnderYang avatar Mar 31 '21 08:03 nAnderYang

在inline协议模式下predixy只支持有限的几个命令,你需要用常规的redis请求协议

fortrue avatar Apr 01 '21 14:04 fortrue