Go Fiber 한글 공식 문서
  • 🙇‍♀️안녕하세요
  • 🏠Home
    • 👋Welcome
    • 📁API
      • 📦Fiber
      • 🚀App
      • 🧠Ctx
      • 📋Constants
      • 🌎Client
      • 📃Log
      • 🧬Middleware
        • Adaptor
        • BasicAuth
        • Cache
        • Compress
        • CORS
        • CSRF
        • EarlyData
        • Encrypt Cookie
        • EnvVar
        • ETag
        • ExpVar
        • Favicon
        • FileSystem
        • Health Check
        • Helmet
        • Idempotency
        • Keyauth
        • Limiter
        • Logger
        • Monitor
        • Pprof
        • Proxy
        • Recover
        • Redirect
        • RequestID
        • Rewrite
        • Session
        • Skip
        • Timeout
    • 📁Guide
      • 🔌Routing
      • 🎭Grouping
      • 📝Templates
      • 🐛Error Handling
      • 🔎Validation
      • 🎣Hooks
      • ⚡Make Fiber Faster
    • 📁Extra
      • 🤔FAQ
      • 📊Benchmarks
  • 🧩Extra
    • 🧬Contrip
      • 👋Welcome
      • Casbin
      • Fgprof
      • Fiberi18n
      • Fibernewrelic
      • Fibersentry
      • Fiberzap
      • Fiberzerolog
      • JWT
      • LoadShed
      • Opafiber
      • Otelfiber
        • Example
      • Paseto
      • README
      • Swagger
      • Websocket
    • 📦Storage
      • 👋Welcome
      • ArangoDB
      • Azure Blob
      • Badger
      • Bbolt
      • Coherence
      • Couchbase
      • DynamoDB
      • Etcd
      • Memcache
      • Memory
      • Minio
      • MongoDB
      • MSSQL
      • MySQL
      • Nats
      • Pebble
      • Postgres
      • Redis
      • Ristretto
      • Rueidis
      • S3
      • ScyllaDb
      • SQLite3
    • 📃Template
      • 👋Welcome
      • Ace
      • Amber
      • Django
      • Handlebars
      • HTML
        • Golang Templates Cheatsheet
      • Jet
      • Mustache
      • Pug
      • Slim
Powered by GitBook
On this page
  • Table of Contents
  • Signatures
  • Installation
  • Examples
  • Config
  • Default Config
  1. Extra
  2. Storage

Rueidis

PreviousRistrettoNextS3

Last updated 1 year ago


자동 파이프라이닝을 수행하고 클라이언트 측 캐싱을 지원하는 빠른 Redis 스토리지입니다. .

참고: Go 1.20 이상 버전이 필요합니다

Table of Contents

  • Signatures

  • Installation

  • Examples

  • Config

  • Default Config

Signatures

func New(config ...Config) Storage
func (s *Storage) Get(key string) ([]byte, error)  
func (s *Storage) Set(key string, val []byte, exp time.Duration) error
func (s *Storage) Delete(key string) error
func (s *Storage) Reset() error
func (s *Storage) Close() error
func (s *Storage) Conn() rueidis.Client

Installation

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

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

go get github.com/gofiber/storage/rueidis

Examples

storage 패키지를 가져옵니다.

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

다음 옵션 중 하나를 사용하여 Rueidis Storage를 생성할 수 있습니다:

// 기본 설정 초기화 (localhost:6379)
store := rueidis.New()

// 사용자 지정 설정 초기화
store := rueidis.New(rueidis.Config{
    InitAddress:    []string{"localhost:6380"},
    Username:       "",
    Password:       "", 
    Database:       0,
    Reset:          false,
    TLSConfig:      nil,
})

// Rueidis URL을 사용하여 초기화
store := rueidis.New(rueidis.Config{
    URL:    "redis://localhost:6379",  
})

// Rueidis 클러스터 클라이언트 초기화
store := rueidis.New(rueidis.Config{
    InitAddress:    []string{":6379", ":6380"},  
})

// TLS 지원이 있는 클라이언트 생성
cer, err := tls.LoadX509KeyPair("./client.crt", "./client.key")
if err != nil {
    log.Println(err)
    return
}
tlsCfg := &tls.Config{
    MinVersion:            tls.VersionTLS12,
    InsecureSkipVerify:    true,
    Certificates:          []tls.Certificate{cer},
}
store = rueidis.New(rueidis.Config{
    InitAddress:    []string{"localhost:6380"},
    Username:       "<user>",
    Password:       "<password>",
    SelectDB:       0,
    TLSConfig:      tlsCfg,
})

Config

type Config struct {
    // 서버 사용자 이름
    //
    // 선택 사항. 기본값은 ""입니다.
    Username string

    // 서버 비밀번호
    // 
    // 선택 사항. 기본값은 ""입니다.
    Password string

    // ClientName은 각 연결에 대해 `CLIENT SETNAME ClientName` 명령을 실행합니다.
    //
    // 선택 사항. 기본값은 ""입니다.
    ClientName string

    // URL은 표준 형식의 Redis URL입니다. 설정하면 InitAddress, Username, Password, ClientName, SelectDB를 포함한 다른 모든 설정 옵션은 효과가 없습니다.
    //
    // 예: redis://<user>:<pass>@localhost:6379/<db>
    // 선택 사항. 기본값은 ""입니다.
    URL string

    // 서버에 연결한 후 선택할 DB입니다.
    //
    // 선택 사항. 기본값은 0입니다.
    SelectDB int

    // 단일 주소 또는 시드 목록 host:port 주소로, FailoverClient와 ClusterClient를 활성화합니다.
    //  
    // 선택 사항. 기본값은 []string{"127.0.0.1:6379"}입니다.
    InitAddress []string

    // 사용할 TLS 설정입니다. 설정하면 TLS가 협상됩니다.
    //
    // 선택 사항. 기본값은 nil입니다.
    TLSConfig *tls.Config

    // CacheSizeEachConn은 단일 Redis 인스턴스에 대한 각 TCP 연결에 바인딩되는 Redis 클라이언트 측 캐시 크기입니다.
    //
    // 선택 사항. 기본값은 DefaultCacheBytes: 128 * (1 << 20)입니다.
    CacheSizeEachConn int

    // RingScaleEachConn은 각 연결의 링 버퍼 크기를 (2 ^ RingScaleEachConn)로 설정합니다.
    //
    // 선택 사항. 기본값은 RingScaleEachConn으로, 각 연결에 대해 2^10 크기의 링을 갖게 됩니다.
    RingScaleEachConn int

    // ReadBufferEachConn은 각 연결의 bufio.NewReaderSize 크기로, 기본값은 DefaultReadBuffer (0.5 MiB)입니다.
    //
    // 선택 사항. 기본값은 DefaultReadBuffer: 1 << 19입니다.
    ReadBufferEachConn int

    // WriteBufferEachConn은 각 연결의 bufio.NewWriterSize 크기로, 기본값은 DefaultWriteBuffer (0.5 MiB)입니다.
    //
    // 선택 사항. 기본값은 DefaultWriteBuffer: 1 << 19입니다.  
    WriteBufferEachConn int

    // BlockingPoolSize는 블로킹 명령(예: BLPOP, BLOCK이 있는 XREAD)에서 공유하는 연결 풀의 크기입니다.
    //
    // 선택 사항. 기본값은 DefaultPoolSize: 1000입니다.
    BlockingPoolSize int

    // PipelineMultiplex는 하나의 Redis 인스턴스에 명령을 파이프라이닝하는 데 사용되는 TCP 연결 수를 결정합니다.
    //
    // 선택 사항. 단일 및 센티넬 클라이언트의 기본값은 2이며, 이는 4개의 연결(2^2)을 의미합니다.
    PipelineMultiplex int

    // DisableRetry는 네트워크 오류 시 읽기 전용 명령 재시도를 비활성화합니다.
    //
    // 선택 사항. 기본값은 False입니다.  
    DisableRetry bool

    // DisableCache는 Client.DoCache/Client.DoMultiCache를 Client.Do/Client.DoMulti로 대체합니다.
    //
    // 선택 사항. 기본값은 false입니다.
    DisableCache bool

    // AlwaysPipelining을 사용하면 rueidis.Client가 동시에 실행되지 않더라도 항상 Redis 명령을 파이프라이닝합니다.
    //
    // 선택 사항. 기본값은 true입니다.
    AlwaysPipelining bool

    // Reset은 기존 Collection의 기존 키를 모두 지웁니다.
    //
    // 선택 사항. 기본값은 false입니다.
    Reset bool

    // CacheTTL TTL
    //
    // 선택 사항. 기본값은 time.Minute입니다.
    CacheTTL time.Duration
}

Default Config

var ConfigDefault = Config{
    Username:            "",
    Password:            "", 
    ClientName:          "",
    SelectDB:            0,
    InitAddress:         []string{"127.0.0.1:6379"},
    TLSConfig:           nil,
    CacheSizeEachConn:   rueidis.DefaultCacheBytes,
    RingScaleEachConn:   rueidis.DefaultRingScale,
    ReadBufferEachConn:  rueidis.DefaultReadBuffer, 
    WriteBufferEachConn: rueidis.DefaultWriteBuffer,
    BlockingPoolSize:    rueidis.DefaultPoolSize,
    PipelineMultiplex:   2,
    DisableRetry:        false,
    DisableCache:        false,
    AlwaysPipelining:    true,
    Reset:               false,
    CacheTTL:            time.Minute,
}

Rueidis는 모듈을 지원하는 최신 에서 테스트되었습니다. 따라서 아직 초기화하지 않았다면 먼저 초기화해야 합니다:

🧩
📦
Go 버전
redis/rueidis