go连接redis
go 连接redis
下载: go get github.com/garyburd/redigo/redis
操作string
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
conn, err := redis.Dial("tcp", "127.0.0.1:6379") //连接
if err != nil {
fmt.Println("err=", err)
return
}
defer conn.Close() //记住关闭
//fmt.Println("成功 = ", conn)
//写入string数据
_, err = conn.Do("Set", "name", "tom")
if err != nil {
fmt.Println(err)
return
}
//读取string数据
r, err := redis.String(conn.Do("Get", "name"))
if err != nil {
fmt.Println(err)
}
fmt.Println(r)
}
操作Hash
_, err = conn.Do("HSet","user01","name","json")
if err!=nil{
fmt.Println(err)
return
}
// 获取HSet的值
r,err := redis.String(conn.Do("HGet","user01","name"))
if err!= nil{
fmt.Println(err)
return
}
fmt.Println(r)
批量set
_, err = conn.Do("HMSet","user02","name","json","age",10)
if err!=nil{
fmt.Println(err)
return
}
// 获取HSet的值
r,err := redis.Strings(conn.Do("HMGet","user02","name","age"))
if err!= nil{
fmt.Println(err)
return
}
fmt.Println(r)
for _,i:=range r{
fmt.Println(i)
}
设置过期时间
_, err = conn.Do("expire","name",20)
操作list
_, err = conn.Do("lpush", "heroList", "宋江", 30, "化", 20)
r, err :=redis.String(conn.Do("rpop","heroList"))
连接池
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
//定义一个全局的pool
var pool *redis.Pool
//程序启动时连接池
func init() {
pool = &redis.Pool{
MaxIdle: 8, //最大空闲链接数
MaxActive: 0, //表示和数据库的最大链接数,0表示没有限制
IdleTimeout: 100, //最大的空闲时间
Dial: func() (redis.Conn, error) {
//初始化代码连接那个ip
return redis.Dial("tcp", "127.0.0.1:6379")
},
}
}
func main() {
//先从pool取出一个连接
conn := pool.Get()
defer conn.Close()
_, err := conn.Do("Set", "NAME", "tom")
if err != nil {
return
}
r, err := redis.String(conn.Do("Get", "NAME"))
if err != nil {
return
}
fmt.Println(r)
//如果要从pool取出连接,一定保证连接池是没有关闭
pool.Close()
conn2 := pool.Get()
defer conn2.Close()
_, err = conn2.Do("Set", "NAME2", "tom2")
if err != nil {
return
}
r2, err := redis.String(conn2.Do("Get", "NAME2"))
if err != nil {
return
}
fmt.Println(r2)
}

浙公网安备 33010602011771号