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
- Save/Load