如何用rust为redis写一个client

如何用rust为redis写一个client

最近nosql变得非常流行,redis作为其中的佼佼者,基本也是大部分程序员必备的技能了。我们知道,redis是一个key-value数据库,它运行在内存中但是可以持久化到内存。我们一般很熟悉redis的那些基本命令,但是如何使用某种语言来操作redis呢?那些常用的语言一般都有相应的驱动,但是像rust这样的新语言呢?

Redis Protocol

Redis是通过RESP(REdis Serialization Protocol)来沟通Sever和Client的。这种协议是专门为Redis设计的,它有以下几种特点:

  • 实现非常简单
  • 解析非常快
  • 很容易被人所理解

RESP采用了TCP来通信。一个redis-client通过创建一个到6379端口的TCP连接来和redis-server通信。并且它采用的是Request-Response模型,即每次一个command发送给服务端后,服务端都会返回一个应答给客户端。

RESP协议的语法非常简单,主要就分成以下几种:

  • Simple Strings: 第一个字节是"+" 比如+OK\r\n
  • Errors: 第一个字节是"-" 比如-Error message\r\n
  • Integers: 第一个字节是":",比如:1000\r\n
  • Bulk Strings: 第一个字节是"$",后跟一个数字,表示String 的长度,后面再跟字符串。比如字符串xyz,就应该是$3\r\nxyz\r\n
  • Arrays: 第一个字节是"*":*后面跟数组元素个数,再后面跟相应的元素,例如*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n

Redis-rust-simple

到目前为止,实际上我们思路已经很清晰了:

  • 建立TCP连接
  • 生成相应的command并发送
  • 接受server发来的reply,并解析

建立连接

这样我们首先创建一个Client结构体

pub struct RedisClient {
    io: TcpStream
}

第一步需要建立连接


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值