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)

}

posted @ 2021-03-31 21:19  小子,你摊上事了  阅读(302)  评论(3)    收藏  举报