七叶笔记 » golang编程 » Redigo – 必不可少的 Go 语言 Redis 库

Redigo – 必不可少的 Go 语言 Redis 库

Redis(REmote DIctionary Server)是一个十分常用的跨平台非关系型数据库。其使用 ANSI C 语言编写,支持网络,可基于内存、分布式、可选持久性的键值存储数据库,并提供多种语言的 API。

而 Go 语言,作为近年来热度不断上升的编程语言,其在 Web 服务端的表现尤为抢眼。因此,如何使用 Go 语言进行 Redis 的操作,乃至于如何支持 Redis 丰富的各种特性,成为一个十分重要的问题。Redigo,就是一个十分优秀的 Go 语言实现的 Redis 客户端库。

Redigo

简介

Redigo,是 gomodule 在 Github 上开源的 Go 语言 Redis 客户端库,目前版本为 v1.8.4。

Redigo 实现了包括 Redis 连接、连接池、命令执行、管道、发布订阅,和 Lua 脚本执行等特性,提供了丰富的 Redis 特性支持。

此外,Redigo 充分利用了 Go 语言的并发特性,提供了高效可靠的 Redis API 实现。另外,也提供了全面的类型转换和断言接口,为弱类型的 Redis 和 强类型的 Go 语言之间建立了方便开发的桥梁。

Redigo 使用广泛,已众多项目的基础依赖,并且已成为 Go 语言的 Redis 客户端实现的事实标准之一。其接口实现合理,内部逻辑优雅,不失为一个优秀的 Go 语言示范项目。

Redigo

使用

要使用 Redigo,首先使用 Go Module 安装:

 go get -u github.com/gomodule/redigo  

安装完成后,就可以在项目中使用 Redigo 了。

我们来看一个最简单的例子:

 package main

import (
"os"

"github.com/gomodule/redigo/redis"
)

func main() {
c, err := redis.DialURL(os.Getenv("REDIS_URL"))
if err != nil {
// handle connection error
}
defer c.Close()
}  

在这个例子中,我们首先引入 Redigo 库,然后,使用 dialURL 函数,创建 redis 连接。dialURL 定义如下:

 func DialURL(rawurl string, options ...DialOption) (Conn, error)  

其接受一个 Redis URL,以及其他配置参数,返回一个 redis.Conn 类型的 redis 连接,以及错误返回值。如果连接没有出错,就使用该连接,进行进一步操作。最终,需要关闭 redis 连接,释放资源。

Redigo 使用通用的 Do 接口来执行命令。redis.Conn 定义了方法 Do,定义如下:

 Do(commandName string, args ...interface{}) (reply interface{}, err error)  

一个简单的使用例子如下:

 package main

import (
"fmt"

"github.com/gomodule/redigo/redis"
)

func main() {
  ...

if _, err = c.Do("SET", "foo", 1); err != nil {
fmt.Println(err)
return
}
exists, err := redis.Bool(c.Do("EXISTS", "foo"))
if err != nil {
fmt.Println(err)
return
}

fmt.Printf("%#v\n", exists)
}  

在这个例子中,我们使用 Do,首先执行了 SET 命令,存储了键值对 foo : 1,然后,在使用 EXISTS 命令,查询键 foo 是否存在,并把返回值使用 redis.Bool 转换为布尔类型。

Redigo

总结

Redigo 实现了 Go 语言的 Redis 客户端库,为使用 Go 语言进行 Web 开发等提供了十分关键的基础工具。

Redigo 实现了丰富的 Redis 特性,包括管道、发布订阅、慢日志等,是一个十分优秀的 Redis API 实现。

同时,Redigo 充分利用了 Go 语言特性,利用 goroutine 和 channel,以及相应的并发控制库,实现了高效可靠的 Redis 连接池机制,并提供了丰富的类型转换接口,减少了额外的类型判断和转换代码。

Redigo

相关文章