首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Golang语言社区

    Go-Redis

    redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo。选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了。 redis、go、redigo的安装就不需要提了,不能强行增加篇幅。 redigo使用起来很人性化,api设计的符合直觉,我对redis了解较少,使用过程中基本没有遇到障碍。 redigo的使用入门可以去查godoc:http://godoc.org/github.com/garyburd/redigo/redis 接下来就是毫无技术

    1.2K50发布于 2018-03-21
  • 来自专栏golang算法架构leetcode技术php

    golang 源码分析:go-redis

    go-redis 的代码实现是一个明显的命令模式,命令模式的优点有将调用操作的对象与知道如何实现该操作的对象解耦,增加新的命令不需要修改现有的类。 go-redis 支撑单节点,哨兵模式和集群模式,每一种模式对应的命令接口其实几乎一样的,go-redis就是通过命令模式将命令和每一种client的实现解耦的。 mypassword", //set password }) 我们以普通client为例进行源码分析,它代码位于: github.com/go-redis 源码位于github.com/go-redis/redis/v8@v8.11.5/commands.go,以ZRevRange为例,可以看到,这个函数类,在它的属性里面调用了自己。 = nil { 连接池的代码位于: github.com/go-redis/redis/v8@v8.11.5/internal/pool/pool.go type Pooler interface {

    81310编辑于 2022-08-03
  • 来自专栏前端少年汪的博客

    go-redis使用入门

    安装go-redis //redis 6 go get github.com/go-redis/redis/v8 //redis 7 go get github.com/go-redis/redis/v9 Password: "wmq12138", DB: 0, }) } 入门案例 package main import ( "context" "fmt" "github.com/go-redis Limiter Limiter } 基本使用 package main import ( "context" "fmt" "github.com/go-redis/redis/v8" "time (msg.Channel, msg.Payload) } } 发布者 publisher package main import ( "context" "fmt" "github.com/go-redis

    83840编辑于 2023-11-21
  • 来自专栏程序员奇点

    Go-Redis Client 配置

    Go Redis 采用的是 new Client 方式初始化一个 client 实例, 一个 client 示例会给每个后端 proxy(codis-proxy) 建立一个连接池 connPool, 每次调用 client 的方法时, client 会轮训选择一个 connPool, 然后再选择一个 conn 来请求真正的 redis proxy

    1.7K50编辑于 2022-02-13
  • 来自专栏陶士涵的菜地

    redis分布式锁的go-redis实现

    保证互斥性 2.设置了超时 , 避免死锁 3.利用mutex保证当前程序不存在并发冲突问题 package redis import ( "context" "github.com/go-redis

    7.6K30发布于 2020-12-11
  • 来自专栏golang算法架构leetcode技术php

    redis客户端对比redigo go-redis

    = nil { fmt.Println("get err:", err) } else { fmt.Println(get_res) } } 输出: OK true redigo go-redis 而资源管理又是编程领域中的一个重点难点,抱着对是否能利用 Go 语言语法简洁的特点来优雅实现连接池的好奇,笔者决定阅读并分析 go-redis 连接池部分的源码,一探究竟。

    1.7K20编辑于 2022-08-02
  • 来自专栏写代码和思考

    Redis 学习笔记8 - 使用 go-redis 访问 redis

    处理使用命令行工具来连接,也可以用你喜欢的语言,本文描述使用 Go 语言 通过 go-redis 库连接。 1.go-redis 介绍 go-redis 是一个基于 Go 语言的 ,类型安全的 Redis 连接客户端框架 Github地址:https://github.com/go-redis/redis go-redis 是个很流行的类库 2. 操作实例 2.1 安装 使用 go Modules 来安装: go mod init github.com/my/repo 2.2 导入包 Import: import "github.com/go-redis 参考 https://github.com/go-redis/redis 文档 https://godoc.org/github.com/go-redis/redis END

    11.2K10发布于 2020-04-02
  • 来自专栏_春华秋实

    一行报错,让我探究起了go-redis连接池

    的源码库预声明的变量即:// 代码位置:go-redis/internal/pool/pool.govar ErrPoolTimeout = errors.New("redis: connection go-redis,一次get请求都经历了哪些模块和步骤若想深入探究出一个简单的 redis 命令在 go-redis 中到底经历了哪些流程,那么首先要完成的是 redis client 的建立,源码如下所示 go-redis连接池,是如何实现和应用的?同样的,为了深入探究go-redis到底是如何工作的,我们也按着上面的思路,一步一步从声明到实现再到使用的。 本着学知识由浅入深的原则,我们就从一个连接池的建立开始,到使用再到关闭来深入理解go-redis的代码和实现原理。 到这里,go-redis的源码基本已经掌握,那么接下来,我们一起探究一下线上错误的原因。

    89920编辑于 2024-07-10
  • 来自专栏Go每日一库

    Go每日一库之196:go-redis(redis客户端库)

    在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。 本书使用 go-redis 这个库来操作 Redis 数据库。使用以下命令下安装 go-redis 库。 go get github.com/go-redis/redis/v8//redis 6 go get github.com/go-redis/redis/v8//redis 7go get github.com /go-redis/redis/v9连接普通连接模式go-redis 库中使用 redis.NewClient 函数连接 Redis 服务器。 最后我们来看一个 go-redis 官方文档中使用 GET 、SET和WATCH命令实现一个 INCR 命令的完整示例。

    1.6K11编辑于 2025-01-07
  • 来自专栏菜鸟成长学习笔记

    如何在Go中操作Redis服务

    文章中演示的组件库为go-redis,本文会对该组件进行详细的演示。 go-redis go-redis是一个基于Golang语言的Redis客户端组件。其功能也非常的强大与完善。支持如下功能。 对应使用Golang操作Redis,另外还有一个组件,该组件相对go-redis有一些区别,2个项目之间的主要区别在于go-redis为每个Redis命令提供了类型安全的API。 配置Redis连接信息 package config import ( "time" "github.com/go-redis/redis/v8" ) func GetConnect nil { fmt.Println(err) return } fmt.Println(result) } 限流 go get github.com/go-redis

    2.4K20编辑于 2022-06-08
  • 来自专栏可能是东半球最正规的API社区

    go-redis版本不一致导致CPU使用率问题

    在纳闷的时候,看到了曹大的一篇文章:go-redis 和 redis server 版本错位导致的高延时问题一例(https://xargin.com/go-redis-v6-and-redis-server -6-are-not-compatible/) 因此猜测此问题是不是也是因为go-redis和redis集群版本不一致导致的呢? 那么很可能cpu使用率差异较高的问题是因为go-redis和redis集群版本不对称造成的。 测试 1.安装redis5. 问题分析 分析下 go-redis v6源码: func hashSet(w http.ResponseWriter, r *http.Request) { ret := cli.HSet("key1 解决问题 定位到问题产生的原因后,解决方案是升级go-redis即可 最后 可以看看go-redis v8版本如何解决这个问题的: github: https://github.com/go-redis

    1.2K10编辑于 2022-12-20
  • 来自专栏Golang语言开发栈

    Go 使用三方 Redis 包操作 Redis

    01 概念 Redis 是一个基于内存的非关系型数据库,在项目开发中使用非常广泛,Go 语言操作 Redis 需要使用三方包,我们选择支持 Redis 集群和 Redis 哨兵的 go-redis 包来讲述 go-redis 包需要使用支持 Modules 的 Go 版本,并且使用导入版本控制。所以需要确保初始化 go module,命令如下所示。 初始化 go mod init package_name 安装 go-redis go get github.com/go-redis/redis/v8 02 Redis 单机 Redis 单机连接 : "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) go-redis = nil { panic(err) } rdb := redis.NewClient(opt) go-redis 包提供 ParseURL 函数,传入参数为字符串类型的连接字符串,返回一个

    5.3K10发布于 2020-09-18
  • 来自专栏福大大架构师每日一题

    go-zero v1.9.2 发布:修复 go-redis 依赖版本回撤问题,提升阻塞型 Redis 操作的稳定性

    一、版本概述 本次 v1.9.2 版本是一次 纯修复版本,唯一的主要改动是 更新 go-redis 版本,以规避其中的已回撤版本问题。 在之前的版本中,由于 go-redis 部分版本被官方回撤,依赖该库的下游项目可能会出现: • 构建失败 • 依赖解析冲突 • 运行时不可预期的行为 v1.9.2 将 go-redis 升级到安全的可用版本 二、主要更新内容 1. go-redis 依赖更新 • 将 github.com/redis/go-redis/v9 从 v9.14.0 升级到 v9.15.0(同时调整 go.sum 中对应的版本信息 • 安全与稳定性提升:通过升级 go-redis 避免构建与运行风险。 升级建议 • 强烈建议 如果项目使用了 Redis,尤其是阻塞型命令,请尽快升级到 v1.9.2,以确保依赖稳定性。 四、总结 go-zero v1.9.2 虽然是一次小版本修复,但它: • 解决了 go-redis 依赖回撤问题,保证了构建与运行的稳定性。

    18610编辑于 2025-12-18
  • 来自专栏Go工具箱

    手把手教你如何创建及使用Go module

    1.1 go get的工作流程 我们以在项目中引入github.com/go-redis/redis包为例。 在项目中使用import导入该包: import "github.com/go-redis/redis" 然后我们需要使用go get命令将该包下载下来: go get github.com/go-redis /go-redis/redis中。 如下图: 现在我们在main模块中引入github.com/go-redis/redis 模块,然后查看go.mod文件,发现有如下间接的依赖模块,这里的模块正是在github.com/go-redis github.com/go-redis/redis/v2 如果不增加v2这个标识,那么当使用go get github.com/go-redis/redis 下载包的时候,go会找到模块名称没有使用主版本标识的最新的版本

    1.4K20编辑于 2023-01-31
  • 来自专栏陶士涵的菜地

    [Go] golang连接redis测试

    go-redis的使用 1.下载代码到GOPATH环境变量指定的目录 比如我的是进入目录D:\golang\code\src\github.com\go-redis , 执行git clone https ://github.com/go-redis/redis.git 2.redis设置过期时间的命令是: setex name 10 taoshihan ;设置10秒过期 package main import ( "fmt" "github.com/go-redis/redis" "time" ) func main() { ExampleNewClient() ExampleClient()

    1.7K30发布于 2019-09-10
  • 来自专栏网管叨bi叨

    Redis 在Go项目中的集成和统一管理

    本节我们在项目中安装和集成 go-redis,让项目能访问Redis,后面实战项目中的用户认证体系会依赖Redis来实现,像Token、Session这些都是在Redis中存储的。 go-redis 的安装和配置 在我们的Go项目里访问Redis使用的是 go-redis 这个包,之前也见过一些项目使用redigo 来访问Redis,不过redigo已经停止维护了,所以就不考虑使用它了 安装 go-redis 使用以下命令 go get github.com/redis/go-redis/v9 安装过程中会向项目依赖中添加下面这些包,在gomod 文件中也会看到它们的身影。 vp.UnmarshalKey("redis", &Redis) } 配置做好后,接下来我们在 dal/cache 目录中新建redisinit.go 文件,在其中对go-redis客户端进行初始化

    38510编辑于 2024-12-20
  • 来自专栏运维开发王义杰

    Redis:优雅地实现多频道订阅,探索Go的BRPop方法

    在Go中,可以使用github.com/go-redis/redis/v8库来实现。 下面是一个简单的示例: package main import ( "context" "fmt" "github.com/go-redis/redis/v8" ) var ctx = 下面是一个简单的示例: package main import ( "context" "fmt" "github.com/go-redis/redis/v8" ) var ctx = 通过合理选择Redis的命令和功能,以及利用Go的github.com/go-redis/redis/v8库,我们可以优雅地实现多频道的消息订阅和处理。

    1.1K20编辑于 2023-11-07
  • 来自专栏全栈工程师修炼之路

    3.Go语言项目操作Redis数据实践

    Go 语言中常用的Redis Client库: redigo : https://github.com/gomodule/redigo go-redis : https://github.com/go-redis 使用命令下载安装go-redis库: go get -u github.com/go-redis/redis Redis 数据库连接 描述: 前面我们下载并安装了go-redis第三方库, 下面我将分别进行单节点连接和集群连接演示 github.com/go-redis/redis/v8。 项目地址: https://pkg.go.dev/github.com/go-redis/redis/v8 注意最新版本的go-redis库相关命令新增了上下文操作,所以需要传递context.Context V8 初始化连接 描述: 此处采用Go-Redis V8 版本, 下述将其封装为包以便后续调用。

    1.9K10编辑于 2022-09-29
  • 来自专栏代码工具

    2种Go Redis客户端使用对比

    总结go-redis和redigo底层是通过调用的万能 Do 方法实现, 但是redigo:由于输入是万能类型所以必须记住每个命令的参数和返回值情况, 使用起来非常的不友好,参数类型是万能类型导致在编译阶段无法检查参数类型 ,每个命令都需要花时间记录使用方法,参数个数等,使用成本高;go-redis:细化了每个redis每个命令的功能, 我们只需记住命令,具体的用法直接查看接口的申请就可以了,使用成本低;其次它对数据类型按照 27928 39923 ns/opBenchmarkRedis/go-redis_client_Benchmark-12 27127 46451 ns/op从上图可以看出, go-redis = nil { fmt.Printf("HGet err=%v\n", er4.Error()) }}go-redis组件介绍和使用介绍go-redis提供了三种对应服务端的客户端模式,集群 ,哨兵,和单机模式,三种模式在连接池这一块都是公用的, 同时还提供了灵活的Hook机制, 其底层实际也是调用的万能 Do 方法.图片但go-redis细化了每个redis每个命令的功能, 我们只需记住命令

    6.5K30编辑于 2022-08-12
  • 来自专栏seth-shi的专栏

    Go 链路追踪中为什么先调用 otel.GetTracerProvider() 再调用 otel.SetTracerProvider() 也能上报成功?

    \n", svcCtx.Config.ListenOn) s.Start() } package svc import ( "time" "github.com/redis/go-redis /extra/redisotel/v9" "github.com/redis/go-redis/v9" "gorm.io/driver/mysql" "gorm.io/gorm" https://github.com/go-gorm/opentelemetry/blob/v0.1.6/tracing/tracing.go#L46 https://github.com/redis/go-redis │ │ │ zrpc.MustNewServer() │ go-redis

    27010编辑于 2024-09-24
领券