localcache

package module
v0.0.0-...-ef2fbd6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2018 License: MIT Imports: 9 Imported by: 0

README

localcache

Build Status GoDoc

Dangerous but concurrent local cache wrapper service with high performance.

How to use?


// new serivce
dangerous := localcache.NewService(&localcache.Options{})

// Register Upstream
dangerous.Register("getterName", 5*time.Second, func(key RequestKey, sink Sink) error {
     strVal, err := upstream()
     if err != nil {
         return err
    }
    sink.SetBytes([]byte(strVal))
    return nil
})

// Get Cache
cache := dangerous.Get(&Key{
    GetterName: "getterName",
    CacheName:  "cachename",
    Value:      context,
})

w.Write(cache.Bytes())

Documentation

Index

Constants

View Source
const (
	EvtKindTimeout  = "TIMEOUT"
	EvtKindComplete = "COMPLETE"
)

Variables

View Source
var (
	// ErrCacheBrokerTimeout ...
	ErrCacheBrokerTimeout = errors.New("cache broker timeout")
	// ErrCacheGetterTimeout ...
	ErrCacheGetterTimeout = errors.New("cache getter timeout")
)
View Source
var ErrBrokerUndefined = errors.New("sorry! localcache's broker undefined")
View Source
var ErrGetterUndefined = errors.New("cache getter undefined")

ErrGetterUndefined ...

View Source
var ErrServiceClosed = errors.New("cache service closed")

ErrServiceClosed ...

Functions

This section is empty.

Types

type Broker

type Broker interface {
	Get(key string) ([]byte, error)
	Set(key string, data []byte) error
}

Broker ...

type Cache

type Cache interface {
	CreateTime() time.Time
	Scan(v interface{}) error
	GetError() error
	String() string
	Bytes() []byte

	LastModified() string
	MD5() string
}

Cache ...

type CacheWrapper

type CacheWrapper struct {
	// contains filtered or unexported fields
}

CacheWrapper ...

func (*CacheWrapper) Bytes

func (wrapper *CacheWrapper) Bytes() []byte

Bytes ...

func (*CacheWrapper) CreateTime

func (wrapper *CacheWrapper) CreateTime() time.Time

CreateTime ...

func (*CacheWrapper) GetError

func (wrapper *CacheWrapper) GetError() error

GetError ...

func (*CacheWrapper) LastModified

func (wrapper *CacheWrapper) LastModified() string

LastModified ...

func (*CacheWrapper) MD5

func (wrapper *CacheWrapper) MD5() string

MD5 ...

func (*CacheWrapper) Scan

func (wrapper *CacheWrapper) Scan(v interface{}) error

Scan ...

func (*CacheWrapper) String

func (wrapper *CacheWrapper) String() string

type EmptyBroker

type EmptyBroker struct{}

func (*EmptyBroker) Get

func (*EmptyBroker) Get(_ string) ([]byte, error)

func (*EmptyBroker) Set

func (*EmptyBroker) Set(_ string, _ []byte) error

type GetterFunc

type GetterFunc func(key RequestKey, sink Sink) error

GetterFunc ...

type Key

type Key struct {
	GetterName string
	CacheName  string
	Value      interface{}
}

Key ...

func (*Key) GetCacheName

func (k *Key) GetCacheName() string

GetCacheName ...

func (*Key) GetGetterName

func (k *Key) GetGetterName() string

GetGetterName ...

func (*Key) GetValue

func (k *Key) GetValue() interface{}

GetValue ...

type Options

type Options struct {
	Broker     Broker
	GetTimeout time.Duration
}

Options ...

type RequestKey

type RequestKey interface {
	GetGetterName() string
	GetCacheName() string
	GetValue() interface{}
}

RequestKey ...

type Service

type Service struct {
	*Options

	Logger *log.Logger
	// contains filtered or unexported fields
}

Service ...

func NewService

func NewService(opts *Options) *Service

NewService returns a new cache service.

func (*Service) Close

func (serv *Service) Close()

Close ...

func (*Service) Get

func (serv *Service) Get(key RequestKey) Cache

Get Cache by key

func (*Service) Register

func (serv *Service) Register(key string, expire time.Duration, getterFunc GetterFunc) error

Register ...

type Sink

type Sink interface {
	SetValue(interface{}) error
	SetBytes([]byte) (int, error)

	Bytes() []byte
}

Sink ...

type UndefinedBroker

type UndefinedBroker struct{}

func (*UndefinedBroker) Get

func (*UndefinedBroker) Get(_ string) ([]byte, error)

func (*UndefinedBroker) Set

func (*UndefinedBroker) Set(_ string, _ []byte) error

Directories

Path Synopsis
benchtest
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL