Golang 操作redis
阿新 • • 發佈:2021-12-06
我使用的是https://github.com/go-redis/redis這個 golang 客戶端, 因此安裝方式如下:
go get github.com/go-redis/redis/v8
接著在程式碼中匯入此包即可:
"github.com/go-redis/redis/v8"
建立客戶端
通過 redis.NewClient 函式即可建立一個 redis 客戶端, 這個方法接收一個 redis.Options 物件引數, 通過這個引數, 我們可以配置 redis 相關的屬性, 例如 redis 伺服器地址, 資料庫名, 資料庫密碼等.
下面是一個連線的例子:
func RedisClient1() *redis.Client{ var ctx= context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 1, // use default DB }) _, err := rdb.Ping(ctx).Result() if err != nil { fmt.Println(err) } return rdb }
String 操作
redis 的 String 操作有:
set(key, value):給資料庫中名稱為key的string賦予值value get(key):返回資料庫中名稱為key的string的value getset(key, value):給名稱為key的string賦予上一次的value mget(key1, key2,…, key N):返回庫中多個string的value setnx(key, value):新增string,名稱為key,值為value setex(key, time, value):向庫中新增string,設定過期時間time mset(key N, value N):批量設定多個string的值 msetnx(key N, value N):如果所有名稱為key i的string都不存在 incr(key):名稱為key的string增1操作 incrby(key, integer):名稱為key的string增加integer decr(key):名稱為key的string減1操作 decrby(key, integer):名稱為key的string減少integer append(key, value):名稱為key的string的值附加value substr(key, start, end):返回名稱為key的string的value的子串
在 go-redis 中, 我們可以直接找到對應的操作方法, 直接上程式碼:
// String 操作 func stringOperation(client *redis.Client) { // 第三個引數是過期時間, 如果是0, 則表示沒有過期時間. err := client.Set("name", "xys", 0).Err() if err != nil { panic(err) } val, err := client.Get("name").Result() if err != nil { panic(err) } fmt.Println("name", val) // 這裡設定過期時間. err = client.Set("age", "20", 1 * time.Second).Err() if err != nil { panic(err) } client.Incr("age") // 自增 client.Incr("age") // 自增 client.Decr("age") // 自減 val, err = client.Get("age").Result() if err != nil { panic(err) } fmt.Println("age", val) // age 的值為21 // 因為 key "age" 的過期時間是一秒鐘, 因此當一秒後, 此 key 會自動被刪除了. time.Sleep(1 * time.Second) val, err = client.Get("age").Result() if err != nil { // 因為 key "age" 已經過期了, 因此會有一個 redis: nil 的錯誤. fmt.Printf("error: %v\n", err) } fmt.Println("age", val) }