Artikel untuk bercakap tentang protokol komunikasi dalam Redis-RESP
本篇文章带大家了解一下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。
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci Artikel untuk bercakap tentang protokol komunikasi dalam Redis-RESP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Mod Redis cluster menyebarkan contoh Redis ke pelbagai pelayan melalui sharding, meningkatkan skalabilitas dan ketersediaan. Langkah -langkah pembinaan adalah seperti berikut: Buat contoh Redis ganjil dengan pelabuhan yang berbeza; Buat 3 contoh sentinel, memantau contoh redis dan failover; Konfigurasi fail konfigurasi sentinel, tambahkan pemantauan maklumat contoh dan tetapan failover; Konfigurasi fail konfigurasi contoh Redis, aktifkan mod kluster dan tentukan laluan fail maklumat kluster; Buat fail nodes.conf, yang mengandungi maklumat setiap contoh Redis; Mulakan kluster, laksanakan perintah Buat untuk membuat kluster dan tentukan bilangan replika; Log masuk ke kluster untuk melaksanakan perintah maklumat kluster untuk mengesahkan status kluster; buat

Cara Mengosongkan Data Redis: Gunakan perintah Flushall untuk membersihkan semua nilai utama. Gunakan perintah flushdb untuk membersihkan nilai utama pangkalan data yang dipilih sekarang. Gunakan Pilih untuk menukar pangkalan data, dan kemudian gunakan FlushDB untuk membersihkan pelbagai pangkalan data. Gunakan perintah DEL untuk memadam kunci tertentu. Gunakan alat REDIS-CLI untuk membersihkan data.

Menggunakan Arahan Redis memerlukan langkah -langkah berikut: Buka klien Redis. Masukkan arahan (nilai kunci kata kerja). Menyediakan parameter yang diperlukan (berbeza dari arahan ke arahan). Tekan Enter untuk melaksanakan arahan. Redis mengembalikan tindak balas yang menunjukkan hasil operasi (biasanya OK atau -r).

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

Cara terbaik untuk memahami kod sumber REDIS adalah dengan langkah demi langkah: Dapatkan akrab dengan asas -asas Redis. Pilih modul atau fungsi tertentu sebagai titik permulaan. Mulakan dengan titik masuk modul atau fungsi dan lihat baris kod mengikut baris. Lihat kod melalui rantaian panggilan fungsi. Berhati -hati dengan struktur data asas yang digunakan oleh REDIS. Kenal pasti algoritma yang digunakan oleh Redis.

Redis menggunakan jadual hash untuk menyimpan data dan menyokong struktur data seperti rentetan, senarai, jadual hash, koleksi dan koleksi yang diperintahkan. Redis berterusan data melalui snapshots (RDB) dan menambah mekanisme tulis sahaja (AOF). Redis menggunakan replikasi master-hamba untuk meningkatkan ketersediaan data. Redis menggunakan gelung acara tunggal untuk mengendalikan sambungan dan arahan untuk memastikan atom dan konsistensi data. Redis menetapkan masa tamat tempoh untuk kunci dan menggunakan mekanisme memadam malas untuk memadamkan kunci tamat tempoh.

Untuk membaca giliran dari Redis, anda perlu mendapatkan nama giliran, membaca unsur -unsur menggunakan arahan LPOP, dan memproses barisan kosong. Langkah-langkah khusus adalah seperti berikut: Dapatkan nama giliran: Namakannya dengan awalan "giliran:" seperti "giliran: my-queue". Gunakan arahan LPOP: Keluarkan elemen dari kepala barisan dan kembalikan nilainya, seperti LPOP Queue: My-Queue. Memproses Baris kosong: Jika barisan kosong, LPOP mengembalikan nihil, dan anda boleh menyemak sama ada barisan wujud sebelum membaca elemen.

Menggunakan REDIS untuk mengunci operasi memerlukan mendapatkan kunci melalui arahan SETNX, dan kemudian menggunakan perintah luput untuk menetapkan masa tamat tempoh. Langkah-langkah khusus adalah: (1) Gunakan arahan SETNX untuk cuba menetapkan pasangan nilai utama; (2) Gunakan perintah luput untuk menetapkan masa tamat tempoh untuk kunci; (3) Gunakan perintah DEL untuk memadam kunci apabila kunci tidak lagi diperlukan.
