Skip to content

Latest commit

History

History
106 lines (85 loc) 路 3.1 KB

README.md

File metadata and controls

106 lines (85 loc) 路 3.1 KB

Coherence

A Coherence storage driver using https://github.com/oracle/coherence-go-client.

Table of Contents

Signatures

func New(config ...Config) (*Storage, error)
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() *Session

Installation

Coherence is supported on Go versions 1.19 and above:

Install the coherence implementation:

go get github.com/gofiber/storage/coherence

Before running or testing this implementation, you must ensure a Coherence cluster is available. For local development, we recommend using the Coherence CE Docker image; it contains everything necessary for the client to operate correctly.

To start a Coherence cluster using Docker, issue the following:

docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:22.06.5

See the documentation here on connection options when creating a Coherence session.

Examples

Import the storage package.

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

You can use the following possibilities to create a storage:

// Initialize default config, to connect to localhost:1408 using plain text
store, err := coherence.New()

// Initialize custom config to connect to a different host/port and use plaint ext.
store, err := coherence.New(coherence.Config{
    Address: "my-host:myport",
})

// Initialize to connect with TLS enabled with your own tls.Config
tlsConfig := config := &tls.Config{...}

store, err := coherence.New(coherence.Config{
    Address: "my-host:myport",
    TLSConfig: tlsConfig,
})

Note: If you create two stores using coherence.New() they will effectivity be idential. If you wish to have two separate stores, then you can use:

store1, err := coherence.New(Config{ScopeName: "scope1"})
store2, err := coherence.New(Config{ScopeName: "scope2"})

Config

// Config defines configuration options for Coherence connection.
type Config struct {
    // Address to connect to, defaults to "localhost:1408"
    Address string

    // Timeout is the default session timeout to connect to Coherence, defaults to 30s
    Timeout time.Duration
	
    // ScopeName defines a scope allowing for multiple storage sessions
    ScopeName string

    // Reset indicates if the store should be reset after being created
    Reset bool

    // TLSConfig specifies tls.Config to use when connecting, if nil then plain text is used 
    TLSConfig *tls.Config
}

Default Config

var DefaultConfig = Config{
    Address:   "localhost:1408",
    Timeout:   time.Duration(30) * time.Millisecond,
    ScopeName: defaultScopeName,
    Reset:     false,
}