ScyllaDb


Fiber를 위한 gocql을 사용하는 ScyllaDb storage engine입니다.

Table of Contents

  • Signatures

  • Installration

  • Examples

  • Config

  • Default Config

Signatures

func New(config ...Config) Storage
func (s *Storage) Get(key string) ([]byte, error)
func (s *Storage) Set(key string, value []byte, expire time.Duration) error
func (s *Storage) Delete(key string) error
func (s *Storage) Reset() error
func (s *Storage) Close() error
func (s *Storage) Conn() *gocql.Session

Installation

ScyllaDb는 모듈을 지원하는 Go versions 2 버전에서 테스트되었습니다. 아직 초기화하지 않았다면 먼저 초기화해야 합니다:

go mod init github.com/<user>/<repo>

그런 다음 scylladb 구현을 설치합니다:

go get github.com/gofiber/storage/scylladb

Examples

storage 패키지를 가져옵니다.

import "github.com/gofiber/storage/scylladb"

다음과 같은 방법으로 storage를 생성할 수 있습니다:

// 기본 config 초기화
store := scylladb.New()

// 사용자 정의 config 초기화  
store := scylladb.New(scylladb.Config{
    Keyspace:       "fiber",
    Hosts:          []string{"127.0.0.1"},
    Port:           9042,
    Table:          "fiber_storage",
    Consistency:    "ONE",
    Reset:          false,
})

// TLS 지원 초기화 (SslOptions로 TLS 사용 구성)
//  
//      InsecureSkipVerify와 EnableHostVerification의 상호작용은 다음과 같습니다:
//
//      |Config.InsecureSkipVerify | EnableHostVerification | 결과             |
//      |--------------------------|------------------------|--------------------|
//      |Config is nil             | false                  | 호스트 검증하지 않음 |
//      |Config is nil             | true                   | 호스트 검증        |
//      |false                     | false                  | 호스트 검증        |
//      |true                      | false                  | 호스트 검증하지 않음 |
//      |false                     | true                   | 호스트 검증        |
//      |true                      | true                   | 호스트 검증        |
store := New(
    Config{
        Keyspace:    "fiber",
        Hosts:       []string{"127.0.0.1"},
        Port:        9042,
        Table:       "fiber_storage",
        Consistency: "ONE",
        SslOpts: &gocql.SslOptions{
            Config: &tls.Config{
                InsecureSkipVerify: false, // 인증서 검증을 활성화하려면 false로 설정
            },
                CertPath:               "/path/to/client_cert.pem", // 클라이언트 인증서 경로
                KeyPath:                "/path/to/client_key.pem",  // 클라이언트 인증서 개인 키 경로
                CaPath:                 "/path/to/ca_cert.pem",     // CA 인증서 경로
                EnableHostVerification: true,                       // 호스트 이름 검증 활성화
        },
        Reset: false,
    },
)

// scylladb 연결을 사용한 사용자 지정 config 초기화
cluster, _ := gocql.NewCluster("127.0.0.1") 
cluster.Keyspace = "fiber"
cluster.Port = 9042

session, _ := cluster.CreateSession()
store := scylladb.New(scylladb.Config{
    Session:         session,
    Keyspace:        "fiber",
    Table:           "fiber_storage", 
    Reset:           false,
})

Config

type Config struct {
    // 기존 ScyllaDb 세션을 사용하기 위해 사용자가 제공하는 Session
    // Session을 사용하면 Keyspace와 다른 모든 인증 값이 무시됩니다. 
    // 
    // 선택 사항. 기본값은 nil
    Session *gocql.Session
    
    // Keyspace 이름
    // 
    // 선택 사항. 기본값은 "fiber"
    Keyspace string
    
    // 초기 연결 설정을 위한 네트워크 주소 배열 
    // 필요에 따라 하나 또는 여러 주소를 유연하게 지정할 수 있습니다.
    // 
    // 선택 사항. 기본값은 "127.0.0.1"  
    Hosts []string
    
    // ScyllaDb 클러스터가 수신 대기하는 포트
    // 
    // 선택 사항. 기본값은 9042
    Port int
    
    // ScyllaDb 클러스터의 사용자 이름 
    // 
    // 선택 사항. 기본값은 ""
    Username string
    
    // ScyllaDb 클러스터의 비밀번호
    // 
    // 선택 사항. 기본값은 ""  
    Password string
    
    // 테이블 이름
    // 
    // 선택 사항. 기본값은 "fiber_storage"
    Table string
    
    // 일관성 수준
    // 
    // 선택 사항. 기본값은 "LOCAL_ONE" 
    Consistency string
    
    // TLS 사용을 구성하는 SslOpts
    // 
    // 선택 사항. 기본값은 nil
    SslOpts *gocql.SslOptions
      
    // 기존 Table의 기존 키를 모두 지우는 Reset
    // 
    // 선택 사항. 기본값은 false  
    Reset bool
}

Default Config

// ConfigDefault는 기본 구성입니다.
var ConfigDefault = Config{
    Session:     nil,
    Keyspace:    "fiber",
    Hosts:       []string{"127.0.0.1"},
    Username:    "",
    Password:    "", 
    Port:        9042,
    Table:       "fiber_storage",
    Consistency: "LOCAL_ONE",
    SslOpts:     nil,
    Reset:       false,
}

Last updated