golang操作redis主要有兩個(gè)庫,go-redis和redigo。兩者操作都比較簡(jiǎn)單,區(qū)別上redigo更像一個(gè)client執(zhí)行各種操作都是通過Do函數(shù)去做的,redis-go對(duì)函數(shù)的封裝更好,相比之下redigo操作redis顯得有些繁瑣。但是官方更推薦redigo,所以項(xiàng)目中我使用了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() }
之后我們調(diào)用redisclient包中的.Get()就可以生成一個(gè)redis連接池對(duì)象來操作redis
2.操作redis
package main import ( "redisclient" "logger" "github.com/garyburd/redigo/redis" ) func main() { c := redisclient.Get() //記得銷毀本次鏈連接 defer c.Close() //寫入數(shù)據(jù) _, err := c.Do("SET", "go_key", "redigo") if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while setting") } //判斷key是否存在 is_key_exit, err := redis.Bool(c.Do("EXISTS", "go_key")) if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while existing") } //獲取value并轉(zhuǎn)成字符串 account_balance, err := redis.String(c.Do("GET", "go_key")) if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while getting") } //刪除key _, err = c.Do("DEL", "go_key") if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while deleting") } //設(shè)置key過期時(shí)間 _, err = c.Do("SET", "mykey", "superWang", "EX", "5") if err != nil { fmt.Println("redis set failed:", err) } //創(chuàng)建key時(shí)設(shè)置5s過期 _, err := c.Do("SET", "go_key:ex", "redigo", "EX", 5) if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while setting") } //對(duì)已有key設(shè)置5s過期時(shí)間 n, err := rs.Do("EXPIRE", "go_key", 5) if err != nil { logger.Runtime().Info(map[string]interface{}{"error": err}, "error while setting") } else if n != int64(1) { fmt.Println("failed") } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:昭通 阿壩 駐馬店 東營(yíng) 晉中 滄州 瀘州 泰安
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go實(shí)現(xiàn)redigo的簡(jiǎn)單操作》,本文關(guān)鍵詞 實(shí)現(xiàn),redigo,的,簡(jiǎn)單,操作,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。