文件 v1.0.0

快速開始

本頁說明安裝 go-redis-fallback、建立第一個實例,並完成一次讀寫。

前置需求

項目 需求
Go 1.24.3 或以上(依 go.mod)
Redis 任一可連線的 Redis 伺服器;執行期間可以失聯
檔案系統 對 Options.DBPath(預設 ./files/redisFallback/db)與 Log.Path(預設 ./logs/redisFallback)具寫入權限

安裝

go get github.com/pardnchiu/go-redis-fallback

套件名稱為 redisFallback,import 路徑為 github.com/pardnchiu/go-redis-fallback。

第一次執行

package main

import (
    "fmt"
    "log"
    "os"
    "path/filepath"
    "strconv"
    "time"

    redisFallback "github.com/pardnchiu/go-redis-fallback"
)

func main() {
    dbPath := "./files/redisFallback/db"
    db := 0

    // 首次啟動必須先建立 {DBPath}/{DB},否則實例不會進入正常模式(見「已知限制」)
    if err := os.MkdirAll(filepath.Join(dbPath, strconv.Itoa(db)), 0755); err != nil {
        log.Fatal(err)
    }

    rf, err := redisFallback.New(redisFallback.Config{
        Redis:  &redisFallback.Redis{Host: "localhost", Port: 6379, DB: db},
        Option: &redisFallback.Options{DBPath: dbPath},
    })
    if err != nil {
        log.Fatal(err)
    }
    defer rf.Close()

    if err := rf.Set("greeting", "hello", 10*time.Minute); err != nil {
        log.Fatal(err)
    }

    value, err := rf.Get("greeting")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(value) // hello
}

確認目前模式

函式庫沒有公開查詢模式的 API,模式切換記錄在日誌中:

日誌({Log.Path}/output.log) 意義
Starting normal mode 啟動時 Ping 成功,開始恢復流程
[getFromRedis] Switching to fallback mode 讀取重試用盡,切入 fallback 模式
[setToRedis] Switching to fallback mode 寫入重試用盡,切入 fallback 模式

啟動時 Ping 失敗則記錄在 error.log:Failed to connect, Starting fallback mode。

下一步

EN