快速開始
本頁說明安裝 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。