tgoop.com/golangprofi/503
Last Update:
🦦 Otter
Самая быстрая библиотека golang in-memory cache, основанная на алгоритме S3-FIFO
. Раюотает во много раз быстрее, чем Ristretto.
Внутри используется хеш таблица, которая имеет мьютекс на каждый бакет + seq lock
для чтения + каждый бакет помещается в две кеш линии, что предотвращает false sharing
и это намногооо быстрее map с мьютексом и sync.Map.
Также исрользуется несколько трюков для избегания частых локов политики вытеснения: при чтении используются wait-free буфферы, которые иногда могут терять данные, но так как главная задача кеша - хранить наиболее частые элементы, то потери незначительны + реализация mpsc очереди при записи, которая значительно превосходит каналы по перфомансу и принцип из статьи bp-wrapper, который коротко можно назвать "batch, batch, batch" aka кеш не обновляет политику мгновенно, а только после наполнения небольшого буффера.go get -u github.com/maypok86/otter
▪️Github
BY Golang Юниор

Share with your friend now:
tgoop.com/golangprofi/503