HTML5技术

Go语言学习笔记(八)golang 操作 Redis Mysql RabbitMQ - 索宁

字号+ 作者:H5之家 来源:H5之家 2017-08-24 09:03 我要评论( )

加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Reids安装导入 go get github.com/garyburd/redigo/ redisimport 链接 github:https://github.com/antirez/redis Doc: Redis全套使用: 使用连接 import func main() {c, err : = redis.Di

加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959

Reids 安装导入

go get github.com/garyburd/redigo/redis import

链接

github:https://github.com/antirez/redis

Doc:

Redis全套使用:

使用 连接

import func main() { c, err := redis.Dial(, ) if err != nil { fmt.Println(, err) return } defer c.Close() }

 

set & get

_, err = c.Do(, , ) if err != nil { fmt.Println(err) return } r, err := redis.String(c.Do(, )) if err != nil { fmt.Println(err) return } fmt.Println(r)

 

mset & mget

批量设置

_, err = c.Do(, , , , ) if err != nil { fmt.Println(, err) return } r2, err := redis.Strings(c.Do(, , )) if err != nil { fmt.Println(, err) return } fmt.Println(r2)

 

hset & hget

hash操作

_, err = c.Do(, , , ) if err != nil { fmt.Println(, err) return } r, err = redis.String(c.Do(, , )) if err != nil { fmt.Println(, err) return } fmt.Println(r)

 

expire

设置过期时间

_, err = c.Do(, , 5) if err != nil { fmt.Println(, err) return }

 

lpush & lpop & llen

队列

// 队列 _, err = c.Do(, , , , 9) if err != nil { fmt.Println(, err) return } for { r, err = redis.String(c.Do(, )) if err != nil { fmt.Println(, err) break } fmt.Println(r) } r3, err := redis.Int(c.Do(, )) if err != nil { fmt.Println(, err) return }

 

连接池

各参数的解释如下:

MaxIdle:最大的空闲连接数,表示即使没有redis连接时依然可以保持N个空闲的连接,而不被清除,随时处于待命状态。

MaxActive:最大的激活连接数,表示同时最多有N个连接

IdleTimeout:最大的空闲连接等待时间,超过此时间后,空闲连接将被关闭

pool := &redis.Pool{ MaxIdle: 16, MaxActive: 1024, IdleTimeout: 300, Dial: func() (redis.Conn, error) { , ) }, }

 

连接池栗子

package main import ( ) var pool *redis.Pool func init() { pool = &redis.Pool{ MaxIdle: 16, MaxActive: 1024, IdleTimeout: 300, Dial: func() (redis.Conn, error) { , ) }, } } func main() { c := pool.Get() defer c.Close() _, err := c.Do(, , ) if err != nil { fmt.Println(err) return } r, err := redis.String(c.Do(, )) if err != nil { fmt.Println(err) return } fmt.Println(r) }

 

管道操作

请求/响应服务可以实现持续处理新请求,客户端可以发送多个命令到服务器而无需等待响应,最后在一次读取多个响应。

使用Send(),Flush(),Receive()方法支持管道化操作

Send向连接的输出缓冲中写入命令。

Flush将连接的输出缓冲清空并写入服务器端。

Recevie按照FIFO顺序依次读取服务器的响应。

func main() { c, err := redis.Dial(, ) if err != nil { fmt.Println(, err) return } defer c.Close() c.Send(, , ) c.Send(, , ) c.Flush() v, err := c.Receive() fmt.Printf(, v, err) v, err = c.Receive() fmt.Printf(, v, err) v, err = c.Receive() // 夯住,一直等待 fmt.Printf(, v, err) }

 

Mysql 安装导入

go go import ( _ )

链接:

github:

  https://github.com/go-sql-driver/mysql

  https://github.com/jmoiron/sqlx

Doc:

      

  

Mysql全套使用:

 

连接

import ( _ ) var Db *sqlx.DB func init() { database, err := sqlx.Open(, ) if err != nil { fmt.Println(, err) return } Db = database }

 

栗子建表

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【canvas学习笔记四】绘制文字 - 池月

    【canvas学习笔记四】绘制文字 - 池月

    2017-08-15 11:00

  • Go语言学习笔记(七)杀手锏 Goroutine + Channel - 索宁

    Go语言学习笔记(七)杀手锏 Goroutine + Channel - 索宁

    2017-08-08 18:00

  • 【canvas学习笔记三】样式和颜色 - 池月

    【canvas学习笔记三】样式和颜色 - 池月

    2017-08-03 14:01

  • 细思极恐:被软链接拯救的数据 - 运维笔记

    细思极恐:被软链接拯救的数据 - 运维笔记

    2017-08-03 13:01

网友点评