Skip to content

Transparent cache and distributed commit to key-value store

License

Notifications You must be signed in to change notification settings

juntaki/transparent

Repository files navigation

transparent

Transparent cache and distributed commit to key-value store written in Go.

Build Status Coverage Status Go Report Card GoDoc

Documentation

Installation

go get github.com/juntaki/transparent

Basic usage

First, create layers and stack them with Stack.Stack(). This example adds LRU memory cache and filesystem cache to dummy source layer.

	cacheLayer1, _ := lru.NewCache(10, 100)
	cacheLayer2 := filesystem.NewCache(10, "/tmp")
	sourceLayer := test.NewSource(10)

	stack := transparent.NewStack()
	stack.Stack(sourceLayer)
	stack.Stack(cacheLayer2)
	stack.Stack(cacheLayer1)

If you manipulate the Stack, the value will be transmitted from top layer to the bottom layer transparently.

	stack.Set("key", []byte("value"))
	stack.Sync()
    
    // value, _ = cacheLayer1.Get("key") // "value"
	// value, _ = cacheLayer2.Get("key") // "value"
	// value, _ = sourceLayer.Get("key") // "value"

	value, _ := stack.Get("key")
	fmt.Printf("%s\n", value)            // "value"

For details, please refer to [Godoc] (https://godoc.org/github.com/juntaki/transparent).

About

Transparent cache and distributed commit to key-value store

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published