V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zazalu
V2EX  ›  Redis

[诚心求问]小白想问一个有关 nc 连接 redis-server 的问题

  •  1
     
  •   zazalu · 2019-08-14 11:31:48 +08:00 · 13178 次点击
    这是一个创建于 1926 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在学习 redis 的过程中,我了解到了可以使用 nc 命令来连接 redis-server, 直接打开一个 TCP 连接来交互数据,获取 redis 的返回

    但是我又从相关书籍上了解到, redis 的数据交互需要遵照 RESP 协议,

    意思就是说我们发送`set hello world` , 这是不符合 RESP 协议的格式的, redis 没法理解的(?), 需要改为

    ```
    *3
    $3
    set
    $5
    hello
    $5
    world

    ```

    如果从这个角度出发, 为什么 nc 工具发送的数据, redis 可以处理并返回呢? 比如如下案例

    ```
    //连接
    nc 127.0.0.1 6379

    //发送一条 redis 指令(没有符合 RESP 协议规定的格式)
    set hello world

    //redis 返回
    +OK

    ```

    由于我知识匮乏, 尝试多次 google, 比如

    1. 为什么 nc 连接 redis, 发送的数据不符合 RESp, redis 却可以理解并返回
    2. nc 发起的 TCP 连接,默认使用的是什么应用层协议.
    ...

    这些关键字的查询结果都不是我想要的 T T

    所以我想希望 v2 的前辈们, 可以帮助我, 这个地方有个我知识的断层区, 心里很难受.
    zazalu
        1
    zazalu  
    OP
       2019-08-14 11:43:00 +08:00
    诚心求问, 已经自己查了很多资料了, 但是都没有点到我问的这个点上. 计算机网络 TCP 那块我也翻了... 真心希望有前辈可以指点下
    momocraft
        2
    momocraft  
       2019-08-14 11:46:54 +08:00
    那就是 tcp 连接(字节流)没有应用层协议

    我看到有人 telnet redis 写文本命令也成功的,也许 redis 就是理解
    jybox
        3
    jybox  
       2019-08-14 11:49:45 +08:00   ❤️ 1
    40huo
        4
    40huo  
       2019-08-14 12:41:24 +08:00   ❤️ 1
    Redis also accepts commands in a special way that is designed for humans, and is called the inline command format.

    也支持 line based
    julyclyde
        5
    julyclyde  
       2019-08-14 12:43:43 +08:00
    本来就理解
    你说的那个格式是应答格式
    zazalu
        6
    zazalu  
    OP
       2019-08-14 12:45:59 +08:00
    @jybox 好像并没有写 nc 的情况啊..

    `Clients send commands to the Redis server using RESP Arrays`

    这个 RESP Arrays 就是我说的格式, 但是 nc 发送数据 没有按照这个格式也能回复正确

    总之谢谢回复..

    我发现我按照 RESP 格式发送数据, redis 反而懵逼了, 算了, 这些内部机制不是自己写的不去揣测了..
    zazalu
        7
    zazalu  
    OP
       2019-08-14 12:47:30 +08:00
    @40huo
    谢谢! 我懂了
    @jybox
    不好意思. 是我没仔细看, 对不起
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.