操作Redis之redigo

BigSun丶發表於2024-03-14

目錄
  • 一、go操作redis的選擇
  • 二、redigo快速使用
    • 1. 快速連結
  • 三、redis操作
  • 四、連線池

一、go操作redis的選擇

  • golang操作redis主要有兩個庫,go-redisredigo

  • go-redis:star數更多,支援連線哨兵及叢集模式的Redis

  • redigo:star數少一些,操作更簡單

二、redigo快速使用

安裝:go get github.com/garyburd/redigo/redis

1. 快速連結

func main() {
	conn,err:=redis.Dial("tcp", "localhost:6379")
	if err!=nil {
		fmt.Println("連線出錯",err)
		return
	}
	defer conn.Close()
	res,err:=conn.Do("ping")
	fmt.Println(res)

}

三、redis操作

func main() {
	conn,err:=redis.Dial("tcp", "localhost:6379")
	if err!=nil {
		fmt.Println("連線出錯",err)
		return
	}
	defer conn.Close()
	res,err:=conn.Do("ping")
	fmt.Println(res)
	// 1 字串 set  get
	//res,_=conn.Do("set","name","lqz")
	//fmt.Println(res)
	//res,_=redis.String(conn.Do("get","name"))
	//fmt.Println(res)

	//2 MSet   MGet
	//conn.Do("MSet", "name", "劉清政", "age", 19)
	//r, _ := redis.Strings(conn.Do("MGet", "name", "age"))
	//fmt.Println(r)

	// 3 expire
	//res,err=conn.Do("expire", "name", 5)

	//4 lpush lpop
	conn.Do("lpush", "hobby", "籃球", "足球", "乒乓球")
	r, _ := redis.String(conn.Do("lpop", "hobby"))
	fmt.Println(r)

	// 5 hset  hget
	conn.Do("HSet", "userinfo", "name", "lqz")
	r,_ = redis.String(conn.Do("HGet", "userinfo", "name"))
	fmt.Println(r)


}

四、連線池

func main() {
	var pool *redis.Pool
	pool = &redis.Pool{
		MaxIdle:     10,  //最初的連線數量
		MaxActive:   0,   //連線池最大連線數量,(0表示自動定義),按需分配
		IdleTimeout: 300, //連線關閉時間 300秒 (300秒不使用自動關閉)
		Dial: func() (redis.Conn, error) { //要連線的redis資料庫
			return redis.Dial("tcp", "localhost:6379")
		},
	}
	conn := pool.Get() //從連線池,取一個連結
	defer conn.Close()
	res, _ := conn.Do("ping")
	fmt.Println(res)

}

相關文章