还在使用 Jaeger/Sentry 吗?Uptrace 是一个供 OpenTelemetry 使用的 开源 APM,可用于监控应用程序并设置警报,以通过电子邮件、Slack、Telegram 等方式接收通知。

比较 go-redis 与 redigo

功能go-redis在新窗口中打开redigo在新窗口中打开
GitHub 星标15k+9k+
类型安全✔️
连接池自动手动
自定义命令✔️✔️
高级发布/订阅 API✔️
Redis Sentinel 客户端✔️使用插件
Redis 集群客户端✔️使用插件
Redis Ring✔️
OpenTelemetry 监控✔️

这两个项目之间的主要区别在于 go-redis 为每个 Redis 命令提供类型安全的 API,而 redigo 使用类似于打印的 API。

// go-redis
timeout := time.Second
_, err := rdb.Set(ctx, "key", "value", timeout).Result()


// redigo
_, err := conn.Do("SET", "key", "value", "EX", 1)

也就是说,如果您需要,go-redis 也支持类似于打印的 API。

// go-redis print-like API
ok, err := rdb.Do(ctx, "SET" "key", "value", "EX", 1).Bool()

此外,go-redis 会自动使用连接池,而 redigo 则需要显式连接管理。

// go-redis implicitly uses connection pooling
_, err := rdb.Set(...).Result()

// redigo requires explicit connection management
conn := pool.Get()
_, err := conn.Do(...)
conn.Close()

但是,如果您需要手动管理连接,go-redis 也允许您这样做。

// go-redis manual connection management
conn := rdb.Conn(ctx)
_, err := conn.Set(...).Result()
conn.Close()