memcache

package module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2023 License: MIT Imports: 6 Imported by: 0

README

go-memcache

In-memory cache with expiration and eviction

Описание

Потокобезопасный кэш данных в памяти.

Память дорогостоящий ресурс и поэтому кэш снабжен механизмом очистки устаревших записей, а также механизмом вытеснения записей при достижении лимита. Механизм очистки запускается при указании CleanupInterval, а вытеснения при указании LimitEnties. Вытеснение работает по принципу - сначала вытесняются устаревшие записи, а за тем в порядке стойкости.

Установка

go get github.com/a-projects/go-memcache@latest

Использование


import (
	"fmt"
	"time"

	"github.com/a-projects/go-memcache"
)

func main() {
	// создаём экземпляр кэша
	cache := memcache.New(memcache.MemcacheOptions{
		// выполнение очистки записей с периодичностью 15 минут
		CleanupInterval: time.Minute * 15,
		// лимит записей в кэше, после которого начинает работать вытеснение
		LimitEntries: 65_536,
		// файл для восстановления кэша при перезапуске приложения
		DataStore: "cache.bin"
	})

	// пробуем получить значение записи по ключу "foo"
	res, ok := cache.Get("foo")

	// если не удаётся получить значение записи
	// причины:
	//   - никто не добавлял запись с этим ключом
	//   - запись была добавлена, но устарела
	//   - запись была добавлена, но была очищена
	//   - запись была добавлена, но была вытеснена
	if !ok {
		// получаем значение из внешних источников
		res = "bar"

		// добавляем отсутствующую запись в кэш в виде ключ, значение
		cache.Set("foo", res, memcache.MemcacheEntryOptions{
			// время жизни записи
			Expiration: time.Now().Add(time.Minute * 5),
			// стойкость к вытеснению
			Durability: memcache.Normal,
		})
	}

	// приводим результат к нужному типу и выводим в консоль
	fmt.Printf(res.(string))

	// останавливаем экземпляр, чтобы данные кэша были сохранены в файл
	cache.Close()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Memcache

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

Memcache кэш

func New

func New(options MemcacheOptions) (memcache *Memcache)

New конструктор также если задан DataStore, то загружает данные кэша из файла

func (*Memcache) Close

func (m *Memcache) Close()

Close деструктор также если задан DataStore, то сохраняет данные кэша в файл

func (*Memcache) Count

func (m *Memcache) Count() (count int)

Count предоставляет количество записей в кэше

func (*Memcache) Del

func (m *Memcache) Del(key string)

Del удаляет запись по ключу

func (*Memcache) Get

func (m *Memcache) Get(key string) (value interface{}, ok bool)

Get предоставляет значение записи по ключу

func (*Memcache) Reset

func (m *Memcache) Reset()

Reset удаляет все записи из кэша

func (*Memcache) Set

func (m *Memcache) Set(key string, value interface{}, options MemcacheEntryOptions)

Set добавляет или изменяет значение записи по ключу

type MemcacheEntryDurability

type MemcacheEntryDurability int

MemcacheEntryDurability стойкость вытеснения записей из кэша при достижении лимита, устаревшие записи имеют стойкость ниже чем Weak

const (
	Weak   MemcacheEntryDurability = -1 // самая низкая стойкость, вытесняется первым
	Normal MemcacheEntryDurability = 0  // вытесняется если нет записей с приоритетом Weak
	Strong MemcacheEntryDurability = 1  // вытесняется если нет записей с приоритетом Normal
)

type MemcacheEntryOptions

type MemcacheEntryOptions struct {
	// Expiration время жизни записи
	Expiration time.Time
	// Durability стойкость к вытеснению, по умолчанию Normal
	Durability MemcacheEntryDurability
}

MemcacheEntryOptions параметры записи

type MemcacheOptions

type MemcacheOptions struct {
	// CleanupInterval интервал очиски кэша от устаревших записей, если 0, то не запускается
	CleanupInterval time.Duration
	// LimitEntries лимит записей в кэше, при достижении которого начинается вытеснение, если 0, то неограничено
	LimitEntries int
	// DataStore файл для восстановления кэша при перезапуске приложения, если пусто, то не восстанавливает
	DataStore string
}

MemcacheOptions параметры кэша

Jump to

Keyboard shortcuts

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