Maison> développement back-end> Golang> le corps du texte

Comment développer une bibliothèque en ligne en utilisant le langage Go et Redis

WBOY
Libérer: 2023-10-27 09:15:51
original
830 Les gens l'ont consulté

Comment développer une bibliothèque en ligne en utilisant le langage Go et Redis

Comment utiliser le langage Go et Redis pour développer une bibliothèque en ligne

Résumé : Cet article vous apprendra comment utiliser le langage Go et Redis pour développer une bibliothèque en ligne simple. En utilisant les performances efficaces de Go et le stockage rapide des données de Redis, nous pouvons facilement créer un système de bibliothèque puissant et facile à gérer. L'article présentera les connaissances de base du langage Go, l'installation et la configuration de Redis, et fournira des exemples de code et des explications spécifiques.

1. Introduction au langage Go et à Redis
Le langage Go est un langage compilé à typage statique développé par Google. Il offre de bonnes performances, une prise en charge de la concurrence et des capacités de récupération de place, ce qui le rend idéal pour créer des services backend efficaces. Redis est une base de données de stockage clé-valeur basée sur la mémoire qui fournit des solutions de stockage de données hautes performances et durables. En utilisant le langage Go et Redis, nous pouvons créer un système de bibliothèque en ligne rapide et évolutif.

2. Installez le langage Go et Redis
Tout d'abord, vous devez installer le langage Go et Redis. Veuillez sélectionner le package d'installation approprié pour l'installation en fonction du système d'exploitation. Une fois l'installation terminée, configurez les variables d'environnement du langage Go et Redis.

3. Initialisez le projet de langage Go
Ouvrez le terminal et créez un nouveau projet de langage Go :

$ mkdir online_library
$ cd online_library
$ go mod init github.com/yourname/online_library

Exécutez la commande ci-dessus dans le terminal, un dossier nommé online_library sera créé et un fichier go.mod généré.

4. Écrire la couche d'accès à la base de données
En langage Go, nous pouvons utiliser la bibliothèque client Redis pour accéder à la base de données. Tout d'abord, exécutez la commande suivante pour installer la bibliothèque client Go pour Redis :

$ go get github.com/go-redis/redis/v8

Créez un fichier nommé database.go dans le répertoire racine du projet et écrivez le Code suivant :

base de données du package

import (

"github.com/go-redis/redis/v8"
Copier après la connexion

)

var client *redis.Client

func Init() {

client = redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // 如果有密码,填写密码 DB: 0, })
Copier après la connexion

}

func GetBooks() ([]Livre, erreur) {

// 从Redis中获取图书列表 books, err := client.Keys("book:*").Result() if err != nil { return nil, err } var bookList []Book for _, bookKey := range books { book, err := client.HGetAll(bookKey).Result() if err != nil { return nil, err } // 将数据转换为Book结构体 var b Book b.ID = book["id"] b.Name = book["name"] b.Author = book["author"] b.Year = book["year"] bookList = append(bookList, b) } return bookList, nil
Copier après la connexion

}

func GetBookByID(id string) (*Book, erreur) {

// 根据ID从Redis中获取图书信息 book, err := client.HGetAll("book:" + id).Result() if err != nil { return nil, err } // 将数据转换为Book结构体 var b Book b.ID = book["id"] b.Name = book["name"] b.Author = book["author"] b.Year = book["year"] return &b, nil
Copier après la connexion

}

func AddBook(book *Book) erreur {

// 将图书信息存储到Redis中 err := client.HMSet("book:"+book.ID, map[string]interface{}{ "id": book.ID, "name": book.Name, "author": book.Author, "year": book.Year, }).Err() if err != nil { return err } return nil
Copier après la connexion

}

func DeleteBook(id string) erreur {

// 从Redis中删除图书 err := client.Del("book:" + id).Err() if err != nil { return err } return nil
Copier après la connexion

}

type Book struct {

ID string Name string Author string Year string
Copier après la connexion

}

Dans le fichier database.go, nous définissons certaines fonctions qui interagissent avec la base de données Redis et initialisons un client Redis. Ces fonctions incluent l'obtention de tous les livres, l'obtention de livres par pièce d'identité, l'ajout de livres et la suppression de livres.

Remarque : Ici, nous stockons les informations relatives au livre dans Redis et utilisons la structure de données Hash pour le stockage.

5. Écriture de la couche d'interface API
En langage Go, nous pouvons utiliser le package net/http de la bibliothèque standard pour écrire l'API Web. Créez un fichier nommé main.go dans le répertoire racine du projet et écrivez le code suivant :

package main

import (

"encoding/json" "github.com/gorilla/mux" "io/ioutil" "net/http" "online_library/database"
Copier après la connexion

)

func main() {

// 初始化数据库 database.Init() // 创建路由 router := mux.NewRouter() router.HandleFunc("/books", GetBooksHandler).Methods("GET") router.HandleFunc("/books/{id}", GetBookByIDHandler).Methods("GET") router.HandleFunc("/books", AddBookHandler).Methods("POST") router.HandleFunc("/books/{id}", DeleteBookHandler).Methods("DELETE") // 启动Web服务器 http.ListenAndServe(":8080", router)
Copier après la connexion

}

func GetBooksHandler(w http .ResponseWriter, r *http.Request) {

// 获取所有图书 books, err := database.GetBooks() if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 返回图书列表 json.NewEncoder(w).Encode(books)
Copier après la connexion

}

func GetBookByIDHandler(w http.ResponseWriter, r *http.Request) {

// 获取图书ID vars := mux.Vars(r) id := vars["id"] // 根据ID获取图书 book, err := database.GetBookByID(id) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 返回图书信息 json.NewEncoder(w).Encode(book)
Copier après la connexion

}

func AddBookHandler(w http.ResponseWriter, r *http. Request ) {

// 解析请求体 body, err := ioutil.ReadAll(r.Body) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } var book database.Book err = json.Unmarshal(body, &book) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 添加图书 err = database.AddBook(&book) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 返回成功状态 w.WriteHeader(http.StatusOK)
Copier après la connexion

}

func DeleteBookHandler(w http.ResponseWriter, r *http.Request) {

// 获取图书ID vars := mux.Vars(r) id := vars["id"] // 删除图书 err := database.DeleteBook(id) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 返回成功状态 w.WriteHeader(http.StatusOK)
Copier après la connexion

}

Dans le fichier main.go, nous avons défini certaines fonctions de traitement de l'interface API et créé un routeur basé sur mux. Ces fonctions incluent l'obtention de tous les livres, l'obtention de livres par pièce d'identité, l'ajout de livres et la suppression de livres.

6. Exécution et tests
Après avoir terminé l'écriture du code ci-dessus, nous pouvons exécuter le projet et le tester. Exécutez la commande suivante dans le terminal :

$ go run .

Ensuite, nous pouvons utiliser des outils tels que Postman ou curl pour tester l'interface API. Voici quelques exemples de demandes :

  • Obtenez tous les livres : GET http://localhost:8080/books
  • Obtenez des livres par ID : GET http://localhost:8080/books/1
  • Ajoutez des livres : POST http : //localhost:8080/books
    Corps de la requête : {"id": "1", "name": "Introduction à la langue Go", "author": "Zhang San", "year": "2021"}
  • Supprimer le livre : DELETE http://localhost:8080/books/1

7. Résumé
Cet article explique comment utiliser le langage Go et Redis pour développer une bibliothèque en ligne simple. En utilisant les performances efficaces de Go et le stockage rapide des données de Redis, nous pouvons facilement créer un système de bibliothèque puissant et facile à gérer. L'article fournit également des exemples de code spécifiques et des explications pour aider les lecteurs à comprendre et à mettre en pratique ce projet. J'espère que cet article vous sera utile dans l'apprentissage du langage Go et du développement Redis.

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!

Étiquettes associées:
source:php.cn
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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!