欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go實(shí)現(xiàn)redigo的簡單操作

 更新時間:2018年07月23日 09:54:18   作者:熔遁丶螺旋手里劍  
golang操作redis主要有兩個庫,go-redis和redigo,今天我們就一起來介紹一下redigo的實(shí)現(xiàn)方法,需要的朋友可以參考下

golang操作redis主要有兩個庫,go-redis和redigo。兩者操作都比較簡單,區(qū)別上redigo更像一個client執(zhí)行各種操作都是通過Do函數(shù)去做的,redis-go對函數(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()就可以生成一個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過期時間
  _, err = c.Do("SET", "mykey", "superWang", "EX", "5")
  if err != nil {
    fmt.Println("redis set failed:", err)
  }
  //創(chuàng)建key時設(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過期時間
  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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入了解Go的interface{}底層原理實(shí)現(xiàn)

    深入了解Go的interface{}底層原理實(shí)現(xiàn)

    本文主要介紹了Go的interface{}底層原理實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • go zero微服務(wù)高在請求量下如何優(yōu)化

    go zero微服務(wù)高在請求量下如何優(yōu)化

    這篇文章主要為大家介紹了go zero微服務(wù)高在請求量下的優(yōu)化處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 淺談go中cgo的幾種使用方式

    淺談go中cgo的幾種使用方式

    本文主要介紹了淺談go中cgo的幾種使用方式,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 解決Golang map range遍歷結(jié)果不穩(wěn)定問題

    解決Golang map range遍歷結(jié)果不穩(wěn)定問題

    這篇文章主要介紹了解決Golang map range遍歷結(jié)果不穩(wěn)定問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go高級特性探究之優(yōu)先級隊(duì)列詳解

    Go高級特性探究之優(yōu)先級隊(duì)列詳解

    Heap?是一種數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)常用于實(shí)現(xiàn)優(yōu)先隊(duì)列,這篇文章主要就是來和大家深入探討一下GO語言中的優(yōu)先級隊(duì)列,感興趣的可以了解一下
    2023-06-06
  • Go 語言下基于Redis分布式鎖的實(shí)現(xiàn)方式

    Go 語言下基于Redis分布式鎖的實(shí)現(xiàn)方式

    本篇文章將詳細(xì)介紹如何正確地實(shí)現(xiàn)Redis分布式鎖,下面通過一個項(xiàng)目基于 Redis 的分布式鎖能夠提供哪些分布鎖特性,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • Golang利用位運(yùn)算實(shí)現(xiàn)為程序加速

    Golang利用位運(yùn)算實(shí)現(xiàn)為程序加速

    這篇文章主要為大家詳細(xì)介紹了如何在Golang中利用位運(yùn)算實(shí)現(xiàn)為程序加速功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-08-08
  • golang雪花算法實(shí)現(xiàn)64位的ID的示例代碼

    golang雪花算法實(shí)現(xiàn)64位的ID的示例代碼

    本文展示了使用Go語言實(shí)現(xiàn)雪花算法生成64位ID的示例代碼,雪花算法通過當(dāng)前時間戳、工作節(jié)點(diǎn)ID、數(shù)據(jù)中心ID和序列號生成唯一的64位ID,確保在分布式系統(tǒng)中的唯一性和時間順序性,感興趣的可以了解一下
    2024-09-09
  • golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    golang項(xiàng)目如何上線部署到Linu服務(wù)器(方法詳解)

    這篇文章主要介紹了golang項(xiàng)目如何上線部署到Linu服務(wù)器,本文通過兩種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 從淺入深帶你掌握Golang數(shù)據(jù)結(jié)構(gòu)map

    從淺入深帶你掌握Golang數(shù)據(jù)結(jié)構(gòu)map

    在?Go?語言中,map?是一種非常常見的數(shù)據(jù)類型,它可以用于快速地檢索數(shù)據(jù)。本篇文章將介紹?Go?語言中的?map,包括?map?的定義、初始化、操作和優(yōu)化,需要的可以參考一下
    2023-04-04

最新評論