用Nodejs 实现一个简单的 Redis客户端( 二 )

这个类用来建立与服务端的连接,使用getConnection()方法,将会交付一个redisSocket,使用这个Socket可以直接向server发送和接受数据 。
4. 实验import { RedisClient, RedisSocket } from "./src/Client";const Redis = new RedisClient({host: "localhost",port: 6379});Redis.getConnection().then((socket: RedisSocket) => {socket.set("Mushroom", "Cookie");socket.set("Mici", "Icmi").then( () => {socket.get("Mushroom").then((data: Buffer) => {console.log(data.toString());socket.close();})});})
这里使用RedisClient建立与本地redis的连接,随后通过getConnection()获取到连接实例,并通过这个连接实例设置了两个数据,以及获取了一数据并打印了出来 。
> pnpm dev> $6 // 这里的$6你也许会感到奇怪,不过我们很快就会知道这是什么> Cookie5. wireshark 抓包分析
用Nodejs 实现一个简单的 Redis客户端

文章插图
这一次请求就是一整个完整的TCP流程,在这其中TCP保证数据的可靠传输,而RESP(REdis Serialization Protocol)把数据封装成一个fragment段,发送到下面的TCP服务端相应的时候也是如此,会把数据封装起来发送到TCP中转发出去 。
看看发送方的RESP
用Nodejs 实现一个简单的 Redis客户端

文章插图
看看响应的RESP
用Nodejs 实现一个简单的 Redis客户端

文章插图
用Nodejs 实现一个简单的 Redis客户端

文章插图
所以知道了吗?没错,6其实就是长度那一部分强行转化为字符串的结果,所以在现在很多流行的redis客户端中如ioredis都对RESP报文做了非常完备的解析,这使得开发者能够非常丝滑的与redis服务端交互 。(感谢这些开发者做的一切!)
6. 杂与代码Github 仓库
希望大家都对世界保持好奇!

经验总结扩展阅读