美文网首页
【Go - redis client 单例】

【Go - redis client 单例】

作者: wn777 | 来源:发表于2024-07-28 23:20 被阅读0次

以下是redis client单例,使用sync.Once保证无论单线程(协程)还是多线程(协程) 只执行一次。

示例

package main

import (
    "context"
    "fmt"
    "sync"

    "github.com/redis/go-redis/v9"
)

var (
    RedisClientSingleton *redis.Client
    once                 sync.Once
)

func getRedisClientSingleton() *redis.Client {
    once.Do(func() {
        rdb := redis.NewClient(&redis.Options{
            Addr:     "",
            Password: "", // no password set
            DB:       0,             // use default DB
        })
        RedisClientSingleton = rdb
    })
    return RedisClientSingleton
}

func main() {

    rdb := getRedisClientSingleton()
    var ctx = context.Background()
    val, err := rdb.Get(ctx, "key1").Result()
    if err == redis.Nil {
        fmt.Println("key1 does not exist")
    } else if err != nil {
        panic(err)
    } else {
        fmt.Println("key1", val)
    }

    rdb2 := getRedisClientSingleton()

    if rdb == rdb2 {
        fmt.Println("rdb and rdb2 are the same")
    }

}

相关文章

  • Redis-集群

    集群 by shihang.mai redis单节点 AKF分析 主备:client只能访问主,master挂了,...

  • Redis实现锁

    基于Redis单例的实现 为了后面更好的了解分布式锁的实现,我们先来看看如何基于Redis单例实现锁服务。我们可以...

  • Kubernetes的client-go库介绍

    [TOC] Kubernetes的client-go库介绍 client-go的作用 github上client-...

  • go语言使用redis(redigo)

    go的redis client用的比较多两个包是redix和redigo,因为beego cache模块里redi...

  • Django使用Redis进行缓存

    Django中使用Redis: 方式A:自定义单例模式连接redis(依赖于pip3 install redis,...

  • Apache pulsar/pulsar-client-go 部

    pulsar-client-go 部署安装 目前,pulsar-client-go采用 go mod 进行包管理,...

  • Golang jsonrpc

    Server client-go client-python

  • 韩顺平尚硅谷TCP/IP例子1

    server.go client.go

  • 单例模式(Go)

    单例模式是23种面向对象的设计模式之一。在实际应用中,涉及到配置或资源管理的对象,都应该考虑单例模式。广义上讲,只...

  • Go单例模式

    单例模式回顾 以前在做java的时候,经常会用到设计模式,如单例模式、工厂模式、观察者模式等。其实设计模式和语言无...

网友评论

      本文标题:【Go - redis client 单例】

      本文链接:https://www.haomeiwen.com/subject/mriihjtx.html