Maison  >  Article  >  développement back-end  >  Développement Golang : utiliser Redis pour implémenter la gestion du cache

Développement Golang : utiliser Redis pour implémenter la gestion du cache

WBOY
WBOYoriginal
2023-09-20 09:55:491014parcourir

Développement Golang : utiliser Redis pour implémenter la gestion du cache

Développement Golang : l'utilisation de Redis pour implémenter la gestion du cache nécessite des exemples de code spécifiques

Introduction :

Dans le développement Web moderne, l'utilisation du cache peut considérablement améliorer les performances et l'expérience utilisateur d'un site Web ou d'une application. En tant que base de données en mémoire hautes performances, Redis est largement utilisé dans la gestion du cache. Cet article expliquera comment utiliser Golang et Redis pour implémenter la gestion du cache, avec des exemples de code spécifiques.

1. Qu'est-ce que la gestion du cache ?

La gestion du cache fait référence au stockage des données fréquemment consultées dans une mémoire à accès rapide pour augmenter la vitesse de lecture des données. Dans le développement Web, les résultats des requêtes de base de données, les résultats de calcul ou d'autres données réutilisées sont généralement stockés dans le cache pour réduire le nombre d'accès à la base de données ou à d'autres ressources externes, améliorant ainsi les performances des applications.

2. Pourquoi choisir Redis ?

Redis est une base de données en mémoire open source hautes performances avec les caractéristiques suivantes :

  1. Rapide : Redis est une base de données basée sur la mémoire, les données sont stockées en mémoire et ont des vitesses de lecture et d'écriture très rapides.
  2. Haute disponibilité : Redis prend en charge la réplication maître-esclave et plusieurs instances Redis peuvent être configurées pour améliorer la disponibilité du système et la tolérance aux pannes.
  3. Types de données riches : Redis prend en charge une variété de structures de données, telles que des chaînes, des hachages, des listes, des ensembles, etc., permettant aux développeurs de stocker et de traiter les données plus facilement.

3. Comment utiliser Redis pour implémenter la gestion du cache ?

Ce qui suit est un exemple pour illustrer comment utiliser Golang et Redis pour implémenter la gestion du cache.

Supposons que nous ayons un site Web de commerce électronique sur lequel les utilisateurs peuvent rechercher des produits connexes en fonction de mots-clés de produits. Afin d'améliorer les performances de recherche, nous pouvons stocker les résultats de recherche dans Redis et définir un délai d'expiration approprié. Lorsque l'utilisateur effectue la même recherche, le cache est d'abord recherché depuis Redis. Si le cache existe, les résultats sont renvoyés directement. Sinon, les résultats sont interrogés depuis la base de données et stockés dans le cache Redis.

Tout d'abord, nous devons installer la bibliothèque client Golang pour Redis, qui peut être installée à l'aide de la commande suivante :

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

Ensuite, créez un fichier nommé redis_cache.go et écrivez le code suivant :

package main

import (
    "encoding/json"
    "fmt"
    "github.com/go-redis/redis/v8"
    "time"
)

type Product struct {
    ID    int
    Name  string
    Price float64
}

func main() {
    // 创建Redis客户端
    client := redis.NewClient(&redis.Options{
        Addr: "localhost:6379",
    })

    // Ping测试连接
    pong, err := client.Ping().Result()
    if err != nil {
        fmt.Println("连接Redis失败:", err)
        return
    }
    fmt.Println("连接Redis成功:", pong)

    // 搜索关键字
    keyword := "手机"

    // 在Redis中查找缓存
    result, err := client.Get(keyword).Result()
    if err == redis.Nil {
        fmt.Println("缓存不存在")

        // 从数据库中查询数据
        products := searchFromDB(keyword)

        // 将查询结果存入Redis,并设置过期时间
        data, _ := json.Marshal(products)
        client.Set(keyword, data, 10*time.Minute)
        
        // 输出查询结果
        fmt.Println("从数据库中查询:", products)
    } else if err != nil {
        fmt.Println("获取缓存失败:", err)
    } else {
        fmt.Println("从缓存中读取:", result)

        // 解析缓存数据
        var products []Product
        json.Unmarshal([]byte(result), &products)

        // 输出查询结果
        fmt.Println("从缓存中读取:", products)
    }
}

func searchFromDB(keyword string) []Product {
    // 模拟从数据库中查询数据的过程
    products := []Product{
        {1, "iPhone 12", 5999.0},
        {2, "华为Mate 40", 4999.0},
        {3, "小米10", 3499.0},
    }
    return products
}

La logique principale du code ci-dessus est la suivante :

  1. Créez un client Redis et connectez-vous au service Redis local.
  2. Effectuez un test Ping pour vous assurer que la connexion est réussie.
  3. Rechercher des mots-clés.
  4. Recherchez le cache depuis Redis, si le cache n'existe pas, interrogez les données de la base de données et stockez les résultats dans le cache Redis.
  5. Si le cache existe, lisez les données directement depuis le cache.
  6. Résultats de la requête de sortie.

Ensuite, nous compilons et exécutons le code :

go build redis_cache.go
./redis_cache

# 输出结果:
# 连接Redis成功: PONG
# 缓存不存在
# 从数据库中查询: [{1 iPhone 12 5999} {2 华为Mate 40 4999} {3 小米10 3499}]

Vous pouvez voir que lorsque nous recherchons le mot-clé "téléphone mobile" pour la première fois, le cache n'existe pas, les données sont interrogées dans la base de données et le les résultats sont stockés dans le cache Redis. Recherchez à nouveau le même mot-clé et lisez les données directement à partir du cache Redis.

4. Résumé

Grâce aux exemples ci-dessus, nous avons implémenté avec succès la gestion du cache à l'aide de Golang et Redis. Dans le développement réel, nous pouvons choisir une stratégie de cache appropriée en fonction des besoins spécifiques de l'entreprise, et gérer raisonnablement le délai d'expiration du cache et la stratégie de mise à jour pour améliorer les performances du système et l'expérience utilisateur.

En apprenant à utiliser Golang et Redis pour mettre en œuvre la gestion du cache, je pense que les lecteurs comprendront mieux comment appliquer la technologie de mise en cache dans le développement Web. J'espère que cet article sera utile aux lecteurs pour apprendre et appliquer la gestion du cache.

Lien de référence :

  • Site officiel de Redis : https://redis.io/
  • Bibliothèque client Go Redis : https://github.com/go-redis/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!

Déclaration:
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