1. 程式人生 > 其它 >Golang 操作redis

Golang 操作redis

我使用的是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)
}