redis连接:
go 连接redis主要使用conn.go文件中的连接函数, 一般使用Dial, DialURL 当然也有
NewConn 创建于redis的连接, 在应用程序使用完毕后必须调用连接的Close() 方法将连接关闭,否则,有可能出现连接池溢出的问题
1.Dail
dial定义
func Dial(network, address string, options ...DialOption) (Conn, error)
network网络协议, 一般指定tcp即可
address 为连接字符串 比如’127.0.0.1:6379’
默认情况下, 没有通过DailOption指定db, 则db默认为0
DialOption 为一些连接参数, 定义:
type DialOption struct {
f func(*dialOptions)
}
type dialOptions struct {
readTimeout time.Duration
writeTimeout time.Duration
dialer *net.Dialer
dial func(network, addr string) (net.Conn, error)
db int
password string
clientName string
useTLS bool
skipVerify bool
tlsConfig *tls.Config
}
DialOption 其实封装了dialOptions, 对应参数的修改也提供量一些对应的方法,根据参数名,可以很方便地找到, 比如,db参数设置func DialDatabase(db int) DialOption 使用DialDatabase即可设置, 具体可以参考如下
DialOption 方法
连接db时候使用
1.DialClientName
func DialClientName(name string)DialOption指定Redis服务器连接使用的客户端名称。
2.DialConnectTimeout
func DialConnectTimeout(d time.Duration) DialOption 指定在未指定DialNetDial选项时连接到Redis服务器的超时。
3.DialDatabase
func DialDatabase(db int)DialOption 指定连接时要选择的数据库。
5.DialKeepAlive
func DialKeepAlive(d time.Duration) DialOption指定在未指定DialNetDial选项时与Redis服务器的TCP连接的保持活动期。如果为零,则不启用keep-alives。如果未指定DialKeepAlive选项,则使用默认值5分钟来确保检测到半封闭的TCP会话。
6.DialNetDial
func DialNetDial(dial func(network, addr string) (net.Conn, error)) DialOption
指定用于创建TCP连接的自定义拨号功能,否则使用通过其他选项自定义的net.Dialer。DialNetDial会覆盖DialConnectTimeout和DialKeepAlive。
7.DialPassword
func DialPassword(password string) DialOption 连接到Redis服务器的密码。
8.DialReadTimeout
func DialReadTimeout(d time.Duration) DialOption 指定读取单个命令回复超时时间。
9.DialTLSConfig
func DialTLSConfig(c *tls.Config) DialOption 指定在TLS连接时使用的配置。
10.DialTLSSkipVerify
func DialTLSSkipVerify(skip bool)DialOption 通过TLS连接时,DialTLSSkipVerify禁用服务器名称验证。
11.DialUseTLS
func DialUseTLS(useTLS bool)DialOption 是否应使用TLS。DialURL忽略此选项。
12.DialWriteTimeout
func DialWriteTimeout(d time.Duration) DialOption 写入单个命令的超时时间
设置示例:
setdb := redis.DialDatabase(12) // 设置db
setPasswd := redis.DialPassword("") // 设置redis连接密码
示例代码:
并验证默认db为0; 这里建立两个连接, 分别操作两个不同的db,验证db参数设置成功
func main() {
setdb := redis.DialDatabase(12)
setPasswd := redis.DialPassword("")
c1, err := redis.Dial("tcp", "127.0.0.1:6379", setdb, setPasswd)
if err != nil {
log.Fatalln(err)
}
defer c1.Close()
c2, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
log.Fatalln(err)
}
defer c2.Close()
resset, err := redis.String(c1.Do("SET", "my_test", "redigo"))
if err != nil {
fmt.Println("set err")
} else {
fmt.Println(resset)
}
//获取value并转成字符串
account_balance, err := redis.String(c1.Do("GET", "my_test"))
if err != nil {
fmt.Println("err while getting:", err)
} else {
fmt.Println(account_balance)
}
c2_get, err := redis.String(c2.Do("GET", "my_test"))
if err != nil {
fmt.Println("err while getting:", err)
} else {
fmt.Println(c2_get)
}
}
输出:
OK
redigo
err while getting: redigo: nil returned
2.DailURL
DialURL使用Redis URI方案连接到给定URL的Redis服务器
例如:
c, err := redis.DialURL("redis://127.0.0.1:6379"")
if err != nil {
// handle connection error
}
defer c.Close()
并发性:
connection不支持并发操作,但支持一个connection调用send, flush, 另一个recive, 如果要使用并发,建议使用redis pool连接池进行, 从goroutine获取
本文详细介绍了Golang中使用redigo库连接Redis的方法,包括Dial和DialURL。Dial函数用于创建连接,DialOption提供了多种设置连接参数的方法,如DialDatabase用于指定数据库,DialPassword设置连接密码等。DialURL则通过URI连接Redis服务器。文中还强调了连接关闭的重要性以及并发操作的注意事项,推荐使用连接池进行并发操作。
786

被折叠的 条评论
为什么被折叠?



