Implémente le client Redis, y compris un pool de connexions et un pipeline Redis
conn.go
func (c *conn) Do(cmd string, args ...interface{}) (interface{}, erreur){
if cmd != "" { if err := c.writeCommand(cmd, args); err != nil { return nil, c.fatal(err) } } if err := c.bw.Flush(); err != nil { return nil, c.fatal(err) } for i := 0; i <= pending; i++ { var e error if reply, e = c.readReply(); e != nil { return nil, c.fatal(e) } if e, ok := reply.(Error); ok && err == nil { err = e } }
}
encapsule les trois processus d'une requête : Envoyer, Flush et Recevoir
1, send écrit la requête dans le tampon de sortie
2 et Flush envoie la commande buffer au serveur
3 , Recevoir reçoit la réponse du serveur
https://godoc.org/github.com/gomodule/redigo/redis#hdr-Pipelining
// conn is the low-level implementation of Conn
Étant donné que Redis est un protocole texte, il doit être sérialisé selon le protocole Redis lors de l'envoi et désérialisé selon le protocole Redis lors de la réception.
Le symbole d'intervalle est rn sous Linux et n sous Windows
. Erreurs R2. , commencez par le "-" moins
Format : -Wly error prelude error message RN
le message d'erreur ne peut pas inclure CR ou LF (ne peut pas être modifié), les erreurs sont très similaires aux chaînes simples, la différence est qu'ErRos le fera Traité comme une exception
par exemple : "-Erreur commande inconnue 'foobar'rn"
Format : Numéro rn
par exemple : ":1000rn"
串4 . Chaînes en vrac de type grande chaîne, commençant par le symbole du dollar américain "$", limite de longueur limitée à 512 M format : longueur de la chaîne $ chaîne RN La chaîne RN ne peut pas inclure CR ou LF (ne peut pas être modifiée) ; "$6
rnfoobar
rn" où la chaîne est foobar, et "6 est la longueur de caractère de foobar Null5. Type de tableau Tableaux, commençant par l'étoile "*":*Tous les types d'éléments de tableau Rn autres types (pas de RN) Remarque : seul le RN après le nombre d'éléments appartient au tableau, et le RN de fin est généralement généralement celui de l'élément RN par exemple : "*0rn" Tableau vide"*. 2rn$2rnfoorn$3rnbarrn" Le tableau contient 2 éléments, qui sont la chaîne foo et bar "*3rn:1rn:2rn:3rn" Tableau Contient 3 entiers : 1, 2, 3
« *5rn:1rn:2rn :3rn:4rn$6rnfoobarrn" Tableau contenant des types mixtes "*-1rn" Tableau nul "*2rn*3rn :1rn:2rn: 3rn*2rn+Foorn-Barrn" Les tableaux sont imbriqués. Le tableau externe contient 2 tableaux . Après tri, ils sont les suivants : "Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!