golang操作redis主要有兩個(gè)庫,go-redis和redigo。兩者操作都比較簡單,區(qū)別上redigo更像一個(gè)client執(zhí)行各種操作都是通過Do函數(shù)去做的,redis-go對函數(shù)的封裝更好,相比之下redigo操作redis顯得有些繁瑣。但是官方更推薦redigo,所以項(xiàng)目中我使用了redigo。
創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元酒泉做網(wǎng)站,已為上家服務(wù),為酒泉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
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連接池對象來操作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") } //對已有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") } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。