Skip to content

A simple Go implementation of two-level (RAM + memory) cache

Notifications You must be signed in to change notification settings

mivallion/two-level-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Two-level cache

A simple Go implementation of two-level (RAM + memory) cache

Двухуровневый кэш

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

Кэш поддерживает хранение всех структур, которые реализуют интерфейс Marshaler:

type Marshaler interface {
  MarshalBinary() ([]byte, error)
  UnmarshalBinary(data []byte) error
}

Хранить в одном кэше можно структуры только одного типа, определяемого при инициализации, например:

type Point struct {
	x int
	y int
}
...
two_level_cache.NewTwoLevelCache(5, 5, &Point{})

Созданный таким образом кэш позволяет хранить структуры Point

TO-DO

  • Save/Load

About

A simple Go implementation of two-level (RAM + memory) cache

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages