Categorygithub.com/cheshir/ttlcache
modulepackage
1.0.0
Repository: https://github.com/cheshir/ttlcache.git
Documentation: pkg.go.dev

# README

Build Status codecov Go Report Card GoDoc License

ttlcache

About

ttlcache – is a simple and efficient in-memory key value storage with TTL for each record.

The key is of uint64 type. Library provides wrappers for common types:

  • IntKey
  • ByteKey
  • Int8Key
  • Uint8Key
  • Int16Key
  • Uint16Key
  • Int32Key
  • Uint32Key
  • Int64Key
  • Uint64Key
  • BytesKey ([]byte)
  • StringKey
  • AnyKey (interface{})

AnyKey is not suitable for very intensive usage. Consider writing your own hash function if your keys are complex types, and you faced performance degradation.

Installation

go get -u github.com/cheshir/ttlcache

Usage

package main

import (
    "github.com/cheshir/ttlcache"
)

const (
    minute = 60 * time.Second
    hour = 60 * minute
)

func main() {
    // How often we need to stop the world and remove outdated records.
	resolution := minute

	cache := ttlcache.New(resolution)
	cache.Set(ttlcache.StringKey("some key"), "value", hour)
	value, ok := cache.Get(ttlcache.StringKey("some key"))
	if !ok {
		// there is no record with key "some key" in the cache. Probably it has been expired.
	}

	fmt.Println(value.(string)) // This is necessary type assertion, because returned value is of interface{} type.
}

Performance

If you're interested in benchmarks you can check them in repository. Just play with numbers and types and check that library is suitable for your purposes.

go test -bench=. -benchmem

For those of us who wants to get some numbers without downloading unknown stuff (MacBook Pro 16"):

BenchmarkCache_Set-16            8755802               122 ns/op               8 B/op          0 allocs/op
BenchmarkCache_Get-16           57474564               19.6 ns/op              0 B/op          0 allocs/op

# Packages

No description provided by the author

# Functions

AnyKey creates key from anything.
ByteKey creates key from byte value.
BytesKey creates key from slice of bytes value.
Int16Key creates key from int16 value.
Int32Key creates key from int32 value.
Int64Key creates key from int64 value.
Int8Key creates key from int8 value.
IntKey creates key from int value.
New creates key-value storage.
StringKey creates key from string value.
Uint16Key creates key from uint16 value.
Uint32Key creates key from uint32 value.
Uint64Key creates key from uint64 value.
Uint8Key creates key from uint8 value.

# Structs

Cache represents key-value storage.