<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Redis
是一個開源的記憶體資料庫,在專案開發中redis
的使用也比較頻繁,本文介紹了Go語言中go-redis
庫的基本使用。感興趣的小夥伴們可以參考借鑑,希望對大家能有所幫助。
Go語言中使用第三方庫go-redis
go-redis支援連線哨兵及叢集模式的Redis。
使用以下命令下載並安裝:
go get -u github.com/go-redis/redis/v8
新建go
檔案,在專案中引入github.com/go-redis/redis/v8
,
初始化redis.Client
,廢話不多說,直接上程式碼。
package main import ( "context" "fmt" "github.com/go-redis/redis/v8" ) // 定義一個全域性變數 var redisdb *redis.Client var ctx = context.Background() func initRedis()(err error){ redisdb = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", // 指定 Password: "", DB:0, // redis一共16個庫,指定其中一個庫即可 }) _,err = redisdb.Ping(ctx).Result() return } func main() { err := initRedis() if err != nil { fmt.Printf("connect redis failed! err : %vn",err) return } fmt.Println("redis連線成功!") }
注意: 最新版本的go-redis
庫的相關命令都需要傳遞context.Context
引數。
通過golang對redis操作,還可以通過redis連線池,流程如下:
(1)事先初始化一定數量的連線,投入到連線池;
(2)當go需要操作redis時,直接從連線池取出連線即可;
(3)這樣可以節省臨時獲取redis的時間,從而提高效率;
go-redis
模組自帶連線池,所有引數都是可選的,引數設定說明範例如下:
redisdb = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", // 指定 Password: "", DB:0, // redis一共16個庫,指定其中一個庫即可 //連線池容量及閒置連線數量 PoolSize: 15, // 連線池最大socket連線數,預設為4倍CPU數, 4 * runtime.NumCPU MinIdleConns: 10, //在啟動階段建立指定數量的Idle連線,並長期維持idle狀態的連線數不少於指定數量;。 //超時 DialTimeout: 5 * time.Second, //連線建立超時時間,預設5秒。 ReadTimeout: 3 * time.Second, //讀超時,預設3秒, -1表示取消讀超時 WriteTimeout: 3 * time.Second, //寫超時,預設等於讀超時 PoolTimeout: 4 * time.Second, //當所有連線都處在繁忙狀態時,使用者端等待可用連線的最大等待時長,預設為讀超時+1秒。 //閒置連線檢查包括IdleTimeout,MaxConnAge IdleCheckFrequency: 60 * time.Second, //閒置連線檢查的週期,預設為1分鐘,-1表示不做週期性檢查,只在使用者端獲取連線時對閒置連線進行處理。 IdleTimeout: 5 * time.Minute, //閒置超時,預設5分鐘,-1表示取消閒置超時檢查 MaxConnAge: 0 * time.Second, //連線存活時長,從建立開始計時,超過指定時長則關閉連線,預設為0,即不關閉存活時長較長的連線 //命令執行失敗時的重試策略 MaxRetries: 0, // 命令執行失敗時,最多重試多少次,預設為0即不重試 MinRetryBackoff: 8 * time.Millisecond, //每次計算重試間隔時間的下限,預設8毫秒,-1表示取消間隔 MaxRetryBackoff: 512 * time.Millisecond, //每次計算重試間隔時間的上限,預設512毫秒,-1表示取消間隔 //可自定義連線函數 Dialer: func(ctx context.Context, network, addr string) (net.Conn, error) { netDialer := &net.Dialer{ Timeout: 5 * time.Second, KeepAlive: 5 * time.Minute, } return netDialer.Dial("tcp", "127.0.0.1:6379") }, //勾點函數 OnConnect: func(ctx context.Context, conn *redis.Conn) error { //僅當用戶端執行命令時需要從連線池獲取連線時,如果連線池需要新建連線時則會呼叫此勾點函數 fmt.Printf("conn=%vn", conn) return nil }, })
本文主要為您介紹了,如何使用go
的第三方包go-redis
連線Redis
。
更多詳情操作請檢視官方檔案
到此這篇關於一文搞懂Go語言操作Redis的方法的文章就介紹到這了,更多相關Go語言操作Redis內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45