Maison développement back-end Golang Apprenez les fonctions de base de données en langage Go et implémentez les opérations de lecture et d'écriture dans le cluster Redis

Apprenez les fonctions de base de données en langage Go et implémentez les opérations de lecture et d'écriture dans le cluster Redis

Jul 29, 2023 pm 12:21 PM
go语言 redis集群 数据库函数

Apprenez les fonctions de base de données dans le langage Go et implémentez des opérations de lecture et d'écriture dans le cluster Redis

Introduction :
La base de données est un élément indispensable des applications Internet d'aujourd'hui, et le langage Go, en tant que langage de programmation simple et efficace, possède également de bonnes capacités d'exploitation de base de données . Cet article expliquera comment utiliser les fonctions de base de données en langage Go et implémenter les opérations de lecture et d'écriture dans le cluster Redis.

1. Fonctions de base de données en langage Go
Les opérations de base de données en langage Go sont principalement implémentées via le package base de données/sql. Ce package fournit des fonctions de base d'exploitation de base de données, notamment la connexion à la base de données, l'exécution d'instructions SQL, le traitement des jeux de résultats, etc.

  1. Connectez-vous à la base de données
    En langage Go, nous pouvons nous connecter à la base de données via la fonction Open du package database/sql. Cette fonction accepte deux paramètres : le nom du pilote de la base de données et les informations de connexion de la base de données, par exemple :

    import "database/sql"
    import _ "github.com/go-sql-driver/mysql"
    
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
     log.Fatal(err)
    }
    defer db.Close()
    Copier après la connexion

    Dans le code ci-dessus, nous utilisons le pilote mysql pour nous connecter à la base de données MySQL locale. Le nom d'utilisateur est root, le mot de passe est mot de passe et le nom de la base de données est base de données.

  2. Exécuter des instructions SQL
    Après la connexion à la base de données, nous pouvons exécuter des instructions SQL via des fonctions telles que db.Exec ou db.Query. La fonction Exec est utilisée pour exécuter des instructions SQL qui ne renvoient pas de jeu de résultats, telles que l'insertion, la mise à jour, la suppression, etc. ; la fonction Query est utilisée pour exécuter des instructions SQL qui renvoient un jeu de résultats, telles que des opérations de requête. Un exemple est le suivant :

    stmt, err := db.Prepare("INSERT INTO users(email, password) VALUES(?, ?)")
    if err != nil {
     log.Fatal(err)
    }
    defer stmt.Close()
    
    result, err := stmt.Exec("test@example.com", "password123")
    if err != nil {
     log.Fatal(err)
    }
    
    lastInsertID, err := result.LastInsertId()
    if err != nil {
     log.Fatal(err)
    }
    fmt.Println(lastInsertID)
    Copier après la connexion

    Dans le code ci-dessus, nous utilisons la fonction Prepare pour précompiler une instruction d'insertion et lier les paramètres à ?, puis exécutons l'instruction d'insertion via la fonction Exec, et le résultat de retour est stocké dans le variable de résultat. L'ID d'auto-incrémentation des données insérées peut être obtenu via result.LastInsertId().

  3. Traitement des ensembles de résultats
    Lors de l'exécution d'une instruction SQL qui renvoie un ensemble de résultats, nous pouvons utiliser la fonction Rows pour obtenir les résultats de la requête. Ensuite, chaque élément de données est traité en parcourant l'ensemble de résultats. L'exemple est le suivant :

    rows, err := db.Query("SELECT id, email FROM users")
    if err != nil {
     log.Fatal(err)
    }
    defer rows.Close()
    
    for rows.Next() {
     var id int
     var email string
     err := rows.Scan(&id, &email)
     if err != nil {
         log.Fatal(err)
     }
     fmt.Println(id, email)
    }
    Copier après la connexion

    Dans le code ci-dessus, nous avons exécuté une instruction de requête via la fonction db.Query et stocké le résultat dans la variable rows. Parcourez ensuite chaque élément de données via rows.Next et enregistrez les données dans la variable correspondante via rows.Scan.

2. Implémenter les opérations de lecture et d'écriture dans le cluster Redis
Redis est une base de données de stockage clé-valeur hautes performances qui peut être exploitée en langage Go via le package go-redis/redis. Nous utiliserons ensuite ce package pour implémenter les opérations de lecture et d'écriture dans le cluster Redis.

  1. Connexion au cluster Redis
    En langage Go, on peut se connecter au cluster Redis via la fonction redis.NewClusterClient. Un exemple est le suivant :

    import "github.com/go-redis/redis/v8"
    
    cluster := redis.NewClusterClient(&redis.ClusterOptions{
     Addrs: []string{"node1:6379", "node2:6379", "node3:6379"},
    })
    defer cluster.Close()
    Copier après la connexion

    Dans le code ci-dessus, nous avons créé un objet redis.ClusterClient et spécifié l'adresse du nœud du cluster Redis via le paramètre ClusterOptions.

  2. Écrire des données sur le cluster Redis
    Après la connexion au cluster Redis, nous pouvons utiliser la fonction Set pour écrire des données sur le cluster. Un exemple est le suivant :

    err := cluster.Set(context.Background(), "key", "value", 0).Err()
    if err != nil {
     log.Fatal(err)
    }
    Copier après la connexion

    Dans le code ci-dessus, nous écrivons un élément de données clé-valeur dans le cluster Redis via la fonction cluster.Set Le délai d'expiration est de 0, ce qui signifie qu'il n'expirera jamais.

  3. Lecture des données du cluster Redis
    Après la connexion au cluster Redis, nous pouvons utiliser la fonction Get pour lire les données du cluster. Un exemple est le suivant :

    val, err := cluster.Get(context.Background(), "key").Result()
    if err != nil {
     log.Fatal(err)
    }
    fmt.Println(val)
    Copier après la connexion

    Dans le code ci-dessus, nous lisons la valeur correspondant à la clé du cluster Redis via la fonction cluster.Get et l'imprimons.

Résumé :
Cet article présente les fonctions de base de données dans l'apprentissage du langage Go et implémente les opérations de lecture et d'écriture du cluster Redis. Grâce aux fonctions de base de données, nous pouvons facilement nous connecter à la base de données, exécuter des instructions SQL et traiter des ensembles de résultats. Grâce au package go-redis/redis, nous pouvons facilement interagir avec le cluster Redis pour réaliser des opérations de stockage et de lecture efficaces. J'espère que cet article pourra aider les lecteurs à mieux comprendre les fonctions de base de données en langage Go et à les appliquer à des projets réels.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Apr 02, 2025 pm 04:00 PM

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

See all articles