go redigo的簡單操作


golang操作redis主要有兩個庫,go-redis和redigo。兩者操作都比較簡單,區別上redigo更像一個client執行各種操作都是通過Do函數去做的,redis-go對函數的封裝更好,相比之下redigo操作redis顯得有些繁瑣。但是官方更推薦redigo,所以項目中我使用了redigo。

1.連接redis

package redisclient

import (
	"fmt"
	redigo "github.com/garyburd/redigo/redis"
)

var pool *redigo.Pool

func init() {
	redis_host := "127.0.0.1"
	redis_port := 6379
	pool_size := 20
	pool = redigo.NewPool(func() (redigo.Conn, error) {
		c, err := redigo.Dial("tcp", fmt.Sprintf("%s:%d", redis_host, redis_port))
		if err != nil {
			return nil, err
		}
		return c, nil
	}, pool_size)
}

func Get() redigo.Conn {
	return pool.Get()
}

之后我們調用redisclient包中的.Get()就可以生成一個redis連接池對象來操作redis

 

2.操作redis

 

package main

import (
	"fmt"
	"redisclient"
	"github.com/garyburd/redigo/redis"
)

func main() {
	c := redisclient.Get()

	//記得銷毀本次鏈連接
	defer c.Close()

	//寫入數據
	_, err := c.Do("SET", "go_key", "redigo")
	if err != nil {
		fmt.Println("err while setting:", err)
	}

	//判斷key是否存在
	is_key_exit, err := redis.Bool(c.Do("EXISTS", "go_key"))
	if err != nil {
		fmt.Println("err while checking keys:", err)
	} else {
		fmt.Println(is_key_exit)
	}

	//獲取value並轉成字符串
	account_balance, err := redis.String(c.Do("GET", "go_key"))
	if err != nil {
		fmt.Println("err while getting:", err)
	} else {
		fmt.Println(account_balance)
	}

	//刪除key
	_, err = c.Do("DEL", "go_key")
	if err != nil {
		fmt.Println("err while deleting:", err)
	}

	//設置key過期時間
	_, err = c.Do("SET", "mykey", "superWang", "EX", "5")
	if err != nil {
		fmt.Println("err while setting:", err)
	}

	//對已有key設置5s過期時間
	n, err := c.Do("EXPIRE", "go_key", 5)
	if err != nil {
		fmt.Println("err while expiring:", err)
	} else if n != int64(1) {
		fmt.Println("failed")
	}
}

 

  

 

希望對大家有所幫助~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM