本篇文章带大家了解一下Redis中的通信协议,介绍一下RESP协议、数据结构的5种单元类型,希望对大家有所帮助!
RESP
RESP(Redis Serialization Protocol)是Redis序列化协议的简写,该协议是纯文本协议,实现过程简单,解析性能较好。【相关推荐:Redis视频教程】
5种单元类型
Redis协议将传输的数据结构分为5种最小的单元类型,单元结束时统一加上回车换行符号\r\n。
1. 单行字符串以 + 符号开头
例:+hello world\r\n
2. 多行字符串以 $ 符号开头,后跟字符串长度
例:$11\r\nhello world\r\n
多行字符串也可以用于表示单行字符串
3. 整数值以 : 符号开头,后跟整数的字符串形式
例::1024\r\n
4. 错误信息以 - 符号开头
参数类型错误
例: -WRONGTYPE Operation against a key holding the wrong kind of value\r\n
5. 数组以 * 号开头,后跟数组的长度
例:*3\r\n:l\r\n:2\r\n:3\r\n
两种特殊类型
1. NULL
NULL使用多行字符串表示,长度为-1
例:$-1\r\n
2. 空字符串
空串用多行字符串表示,长度填0
例:$0\r\n\r\n
空字符串有两个\r\n,因为两个\r\n之间的就是空串
客户端请求服务端
客户端向服务器发送的指令只有一种格式,就是多行字符串数组。
例如一个简单的set指令 set x x 会被序列化成下面的字符串
*3\r\n$3\r\nset\r\n$1\r\nx\r\n$1\r\nx\r\n
控制台展示如下
*3 $3 set $1 x $1 x
服务端响应客户端
服务端响应客户端信息时,将会使用多种数据结构,比客户端发送到服务端时复杂很多,不过即便很复杂,也是上面提到的5种基本类型的组合。
单行字符串响应
127 . 0 .0.1: 6379> set x x OK
上面的OK就是单行字符串响应(没有双引号),即 +OK
错误响应
127 . 0 . 0.1:6379> incr x (error} ERR value is not an integer or out of range
对一个字符串进行自增,服务器抛出错误提醒
-ERR value is not an integer or out of range
整数响应
127.0.0.1:6379> incr books (integer} 1
1就是整数响应 :1
多行字符串响应
127.0.0.1:6379> get x "x"
上面用括号引起来的x就是多行字符串响应,即:
$1 x
数组响应
127.0.0.1:6379> hset info name bibabo (integer) 1 127.0.0.1:6379> hset info age 18 (integer) 1 127.0.0.1:6379> hset info sex male (integer) 1 127.0.0.1:6379> hgetall info 1) "name" 2) "bibabo" 3) "age" 4) "18" 5) "sex" 6) "male"
上面的hgetall命令返回的就是一个数组,第0、2、4的字符串是hash表的key,1、3、6则是value,客户端负责将数组组装成字典返回。
*6 $4 name $6 bibabo $3 age $2 18 $3 sex $4 male
嵌套
127.0.0.1:6379> scan 0 1 )"0" 2) 1 ) "info" 2 )"books" 3 )"author"
scan命令用来扫描服务器包含的所有key列表,通过游标的形式一次获取一部分,该命令返回的是一个嵌套数组,
数组第一个值表示游标的值,如果这个值为0,说明已经遍历完毕,如果不为0,使用这个值作为下一次scan时的参数,
数组的第二个值又是一个数组,这个数组就是key的列表。
*2 $1 0 *3 $4 info $5 books $6 author
结
Redis作为文本协议中含有大量的回车换行符,这会占用网络流量,不过依然有很多项目使用RESP作为通讯协议,因为性能并不是评分的全部,简单性、易理解性、易实现性都需要进行权衡,
一般数据库的瓶颈很少在协议上,而是内部的逻辑处理,Redis使用一个单线程对外提供服务,在CPU跑满的情况下,可以达到10w/s的QPS。
更多编程相关知识,请访问:编程视频!!
위 내용은 Redis-RESP의 통신 프로토콜에 대해 설명하는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

redis error就是redis数据库和其组合使用的部件出现错误,这个出现的错误有很多种,例如Redis被配置为保存数据库快照,但它不能持久化到硬盘,用来修改集合数据的命令不能用。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版
시각적 웹 개발 도구

뜨거운 주제



