redis server与client通信协议介绍

本文介绍了Redis客户端与服务器之间的通信协议特点,包括简单实现、快速解析等。每个命令以 结尾,服务器根据命令类型返回不同类型的数据,如单行字符串、错误信息、整数、批量回复和多个批量回复。此外,还探讨了zipmap和ziplist编码方式,用于优化hash结构的内存使用,当结构数量和值大小满足条件时采用一维数组存储,通过Varint编码节省空间。
摘要由CSDN通过智能技术生成

今天在整理以前开发相关时的一些资料,其中对于redis protocol的解析有些小记录,记录在此:

一.reidis client-server协议是有如下特点

1.实现简单

2.能够被计算机快速解析。

3.使用者也容易理解

二.通信

client与redis server建立TCP连接,每个命令与数据传送最后都以\r\n结尾。

Redis跟据不同的命令进行不同的回复。redis server回复的内容类型通过第一个参数可以判断:

1."+"号开头表示单行字符串的回复 如:+OK

2."-"号开头表示错误的信息回复。 如:-wrong date type

3.":"号开头表示一个整数回复。 如":0\r\n"

4."$"号开头表示一个批量的回复。 如GET mykey 返回$6\r\nfoobar\r\n 其中6为字节数,foobar为实现的字符串数据。

5."*"号开头表示多个批量回复。

批量回复

对于$得到单个批量的回复,如果请求不存在数据块,返回$-1,这种情况对于客户端API返回的是null对象还不是空串.

多个批量回复

例如:

C: LRANGE mylist 0 3

s: *4

s: $3

s: foo

s: $3

s: bar

s: $5

s: Hello

s: $5

s: World

参上返回四个参数:

*4\r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值