本文已参与[新人创作礼]活动,一起开启掘金创作之路。
Redis将所有数据都放在内存中,用一个单线程对外提供服务,单个节点在跑满一个CPU核心的情况下可以达到了10w/s的超高QPS。
RESP
RESP是序列化协议(Reids Serialization Protocol)的简写。它是一种直观的文本协议,优势在于实现过程异常简单,解析性能极好。 Redis协议将传输的数据结构分为5种最小单元类型,单元结束时统一加上回车换行符号\r\n。
- 单行字符串以"+"符号开头
- 多行字符串以"$"符号开头,后跟字符串长度
- 整数值以":"符号开头,后跟整数的字符串形式
- 错误消息以"-"符号开头
- 数组以"*"号开头,后跟数组的长度
单行字符串hello world
+hello world\r\n
多行字符串hello world
$11\r\nhello world\r\n
整数1024
:1024\r\n
错误
参数类型错误
-WRONGTYPE Operation against a key holding the world kond of value\r\n
数组[1,2,3]
*3\r\n:1\r\n:2\r\n:3\r\n
NULL
NULL 用多行字符串表示,不过长度要写成-1
$-1\r\n
空串
空串 用多行字符串表示,不过长度要写成0
$0\r\n\r\n
注意这里有两个\r\n。为什么是两个呢?因为两个\r\n之间,隔得是空串