cachego

package module
v0.22.2 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2024 License: MIT Imports: 1 Imported by: 27

README

Cachego

Codecov branch GoDoc Go Report Card License

Simple interface for caching

Installation

Cachego requires Go 1.18 or later.

go get github.com/faabiosr/cachego

Usage

package main

import (
	"log"
	"time"

	"github.com/faabiosr/cachego/sync"
)

func main() {
	cache := sync.New()

	if err := cache.Save("user_id", "1", 10*time.Second); err != nil {
		log.Fatal(err)
	}

	id, err := cache.Fetch("user_id")
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("user id: %s \n", id)

	keys := cache.FetchMulti([]string{"user_id", "user_name"})

	for k, v := range keys {
		log.Printf("%s: %s\n", k, v)
	}

	if cache.Contains("user_name") {
		cache.Delete("user_name")
	}

	if _, err := cache.Fetch("user_name"); err != nil {
		log.Printf("%v\n", err)
	}

	if err := cache.Flush(); err != nil {
		log.Fatal(err)
	}
}

Supported drivers

Documentation

Read the full documentation at https://pkg.go.dev/github.com/faabiosr/cachego.

Development

Requirements
Makefile
// Clean up
$ make clean

//Run tests and generates html coverage file
$ make cover

// Up the docker containers for testing
$ make docker

// Format all go files
$ make fmt

//Run linters
$ make lint

// Run tests
$ make test

License

This project is released under the MIT licence. See LICENSE for more details.

Documentation

Overview

Package cachego provides a simple way to use cache drivers.

Example Usage

The following is a simple example using memcached driver:

import (
  "fmt"
  "github.com/faabiosr/cachego"
  "github.com/bradfitz/gomemcache/memcache"
)

func main() {

  cache := cachego.NewMemcached(
      memcached.New("localhost:11211"),
  )

  cache.Save("foo", "bar")

  fmt.Println(cache.Fetch("foo"))
}

Index

Constants

View Source
const (
	// ErrCacheExpired returns an error when the cache key was expired.
	ErrCacheExpired = err("cache expired")

	// ErrFlush returns an error when flush fails.
	ErrFlush = err("unable to flush")

	// ErrSave returns an error when save fails.
	ErrSave = err("unable to save")

	// ErrDelete returns an error when deletion fails.
	ErrDelete = err("unable to delete")

	// ErrDecode returns an errors when decode fails.
	ErrDecode = err("unable to decode")
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Cache

type Cache interface {
	// Contains check if a cached key exists
	Contains(key string) bool

	// Delete remove the cached key
	Delete(key string) error

	// Fetch retrieve the cached key value
	Fetch(key string) (string, error)

	// FetchMulti retrieve multiple cached keys value
	FetchMulti(keys []string) map[string]string

	// Flush remove all cached keys
	Flush() error

	// Save cache a value by key
	Save(key string, value string, lifeTime time.Duration) error
}

Cache is the top-level cache interface

Directories

Path Synopsis
Package bolt providers a cache driver that stores the cache using BoltDB.
Package bolt providers a cache driver that stores the cache using BoltDB.
Package chain provides chaining cache drivers operations, in case of failure the driver try to apply using the next driver informed, until fail.
Package chain provides chaining cache drivers operations, in case of failure the driver try to apply using the next driver informed, until fail.
Package file providers a cache driver that stores the cache content in files.
Package file providers a cache driver that stores the cache content in files.
Package memcached providers a cache driver that stores the cache in Memcached.
Package memcached providers a cache driver that stores the cache in Memcached.
Package mongo providers a cache driver that stores the cache in MongoDB.
Package mongo providers a cache driver that stores the cache in MongoDB.
Package redis providers a cache driver that stores the cache in Redis.
Package redis providers a cache driver that stores the cache in Redis.
Package sqlite3 providers a cache driver that stores the cache in SQLite3.
Package sqlite3 providers a cache driver that stores the cache in SQLite3.
Package sync providers a cache driver that uses standard golang sync.Map.
Package sync providers a cache driver that uses standard golang sync.Map.

Jump to

Keyboard shortcuts

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