# 快速上手：Socket Daemon

本頁示範以 `daemon.New` 開啟 ToriiDB 資料目錄；多個 process 共用同一目錄時使用這個入口。

## 使用 Socket Daemon

當可能有多個 process 存取同一資料目錄時，建議以 `daemon.New` 為進入點。第一個 process 開啟 store 並提供 unix socket；之後在同目錄呼叫 `New` 的都成為該 socket 的 client。兩種情況下程式碼呼叫的方法完全相同。

```go
package main

import (
    "context"
    "fmt"
    "log"

    "github.com/pardnchiu/toriidb/core/daemon"
)

func main() {
    ctx := context.Background()

    d, err := daemon.New("./data")
    if err != nil {
        log.Fatal(err)
    }
    defer d.Close()

    if err := d.Start(); err != nil {
        log.Fatal(err)
    }

    if err := d.Set(ctx, 0, "user:1", map[string]any{"name": "Torii", "level": 1}, nil); err != nil {
        log.Fatal(err)
    }

    record, err := d.Get(ctx, 0, "user:1")
    if err != nil {
        log.Fatal(err)
    }
    value, _ := record.Value()
    fmt.Println(record.Type, value)
}
```

`Start` 不會阻塞，client 模式下不做任何事。`Close` 在 server 模式停止 listener 並關閉 store，在 client 模式關閉連線池。

## 相關頁面

- [模式判定](/zh/socket-daemon)
- [資料方法](/zh/socket-daemon-methods)
- [快速上手：內嵌 Store](/zh/getting-started-embedded)
