├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── lint.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── .golangci.yml ├── LICENSE ├── Makefile ├── README.md ├── bench ├── README.md ├── devel_test.go ├── hit_miss_test.go ├── safety_test.go ├── strategy_base_test.go ├── strategy_ttl_test.go ├── strategy_wihout_eviction_test.go └── wrapper_mock.go ├── cache_composition.go ├── cache_composition_test.go ├── config.go ├── config_test.go ├── docs ├── README.md ├── best-practices.md ├── faq.md └── quickstart.md ├── examples ├── README.md ├── basic │ ├── batch │ │ ├── README.md │ │ └── batch-operations.go │ ├── concurrency │ │ ├── README.md │ │ └── thread-safety.go │ ├── simple-lru │ │ ├── README.md │ │ └── simple.go │ └── ttl │ │ ├── README.md │ │ └── ttl.go ├── database │ ├── README.md │ ├── go.mod │ ├── go.sum │ └── postgresql-cache.go ├── observability │ ├── README.md │ └── prometheus.go └── web │ ├── README.md │ └── http-server.go ├── go.mod ├── go.sum ├── helpers_test.go ├── hot.go ├── hot_test.go ├── internal ├── README.md ├── container │ └── list │ │ ├── README.md │ │ ├── list.go │ │ └── list_test.go ├── nocopy.go ├── sketch │ ├── doorkeeper.go │ ├── sketch.go │ └── sketch_test.go ├── time.go └── time_test.go ├── item.go ├── item_test.go ├── loader.go ├── loader_test.go ├── main_test.go ├── mutex.go ├── mutex_test.go ├── pkg ├── arc │ ├── arc.go │ └── arc_test.go ├── base │ ├── base.go │ ├── eviction.go │ ├── eviction_test.go │ └── types.go ├── fifo │ ├── fifo.go │ └── fifo_test.go ├── lfu │ ├── lfu.go │ └── lfu_test.go ├── lru │ ├── lru.go │ └── lru_test.go ├── metrics │ ├── cache_layer.go │ ├── cache_layer_test.go │ ├── collector.go │ ├── collector_noop.go │ ├── collector_noop_test.go │ ├── collector_prometheus.go │ ├── collector_prometheus_test.go │ └── collector_test.go ├── s3fifo │ ├── s3fifo.go │ └── s3fifo_test.go ├── safe │ ├── safe.go │ └── safe_test.go ├── sharded │ ├── hasher.go │ ├── hasher_test.go │ ├── sharded.go │ └── sharded_test.go ├── tinylfu │ ├── tinylfu.go │ └── tinylfu_test.go ├── twoqueue │ ├── 2q.go │ └── 2q_test.go └── wtinylfu │ ├── wtinylfu.go │ └── wtinylfu_test.go ├── utils.go └── utils_test.go /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [samber] 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.github/workflows/lint.yml -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.gitignore -------------------------------------------------------------------------------- /.golangci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/.golangci.yml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/README.md -------------------------------------------------------------------------------- /bench/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/README.md -------------------------------------------------------------------------------- /bench/devel_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/devel_test.go -------------------------------------------------------------------------------- /bench/hit_miss_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/hit_miss_test.go -------------------------------------------------------------------------------- /bench/safety_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/safety_test.go -------------------------------------------------------------------------------- /bench/strategy_base_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/strategy_base_test.go -------------------------------------------------------------------------------- /bench/strategy_ttl_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/strategy_ttl_test.go -------------------------------------------------------------------------------- /bench/strategy_wihout_eviction_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/strategy_wihout_eviction_test.go -------------------------------------------------------------------------------- /bench/wrapper_mock.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/bench/wrapper_mock.go -------------------------------------------------------------------------------- /cache_composition.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/cache_composition.go -------------------------------------------------------------------------------- /cache_composition_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/cache_composition_test.go -------------------------------------------------------------------------------- /config.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/config.go -------------------------------------------------------------------------------- /config_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/config_test.go -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/docs/README.md -------------------------------------------------------------------------------- /docs/best-practices.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/docs/best-practices.md -------------------------------------------------------------------------------- /docs/faq.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/docs/faq.md -------------------------------------------------------------------------------- /docs/quickstart.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/docs/quickstart.md -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/README.md -------------------------------------------------------------------------------- /examples/basic/batch/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/batch/README.md -------------------------------------------------------------------------------- /examples/basic/batch/batch-operations.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/batch/batch-operations.go -------------------------------------------------------------------------------- /examples/basic/concurrency/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/concurrency/README.md -------------------------------------------------------------------------------- /examples/basic/concurrency/thread-safety.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/concurrency/thread-safety.go -------------------------------------------------------------------------------- /examples/basic/simple-lru/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/simple-lru/README.md -------------------------------------------------------------------------------- /examples/basic/simple-lru/simple.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/simple-lru/simple.go -------------------------------------------------------------------------------- /examples/basic/ttl/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/ttl/README.md -------------------------------------------------------------------------------- /examples/basic/ttl/ttl.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/basic/ttl/ttl.go -------------------------------------------------------------------------------- /examples/database/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/database/README.md -------------------------------------------------------------------------------- /examples/database/go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/database/go.mod -------------------------------------------------------------------------------- /examples/database/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/database/go.sum -------------------------------------------------------------------------------- /examples/database/postgresql-cache.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/database/postgresql-cache.go -------------------------------------------------------------------------------- /examples/observability/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/observability/README.md -------------------------------------------------------------------------------- /examples/observability/prometheus.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/observability/prometheus.go -------------------------------------------------------------------------------- /examples/web/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/web/README.md -------------------------------------------------------------------------------- /examples/web/http-server.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/examples/web/http-server.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/go.sum -------------------------------------------------------------------------------- /helpers_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/helpers_test.go -------------------------------------------------------------------------------- /hot.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/hot.go -------------------------------------------------------------------------------- /hot_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/hot_test.go -------------------------------------------------------------------------------- /internal/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/README.md -------------------------------------------------------------------------------- /internal/container/list/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/container/list/README.md -------------------------------------------------------------------------------- /internal/container/list/list.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/container/list/list.go -------------------------------------------------------------------------------- /internal/container/list/list_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/container/list/list_test.go -------------------------------------------------------------------------------- /internal/nocopy.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/nocopy.go -------------------------------------------------------------------------------- /internal/sketch/doorkeeper.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/sketch/doorkeeper.go -------------------------------------------------------------------------------- /internal/sketch/sketch.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/sketch/sketch.go -------------------------------------------------------------------------------- /internal/sketch/sketch_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/sketch/sketch_test.go -------------------------------------------------------------------------------- /internal/time.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/time.go -------------------------------------------------------------------------------- /internal/time_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/internal/time_test.go -------------------------------------------------------------------------------- /item.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/item.go -------------------------------------------------------------------------------- /item_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/item_test.go -------------------------------------------------------------------------------- /loader.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/loader.go -------------------------------------------------------------------------------- /loader_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/loader_test.go -------------------------------------------------------------------------------- /main_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/main_test.go -------------------------------------------------------------------------------- /mutex.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/mutex.go -------------------------------------------------------------------------------- /mutex_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/mutex_test.go -------------------------------------------------------------------------------- /pkg/arc/arc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/arc/arc.go -------------------------------------------------------------------------------- /pkg/arc/arc_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/arc/arc_test.go -------------------------------------------------------------------------------- /pkg/base/base.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/base/base.go -------------------------------------------------------------------------------- /pkg/base/eviction.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/base/eviction.go -------------------------------------------------------------------------------- /pkg/base/eviction_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/base/eviction_test.go -------------------------------------------------------------------------------- /pkg/base/types.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/base/types.go -------------------------------------------------------------------------------- /pkg/fifo/fifo.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/fifo/fifo.go -------------------------------------------------------------------------------- /pkg/fifo/fifo_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/fifo/fifo_test.go -------------------------------------------------------------------------------- /pkg/lfu/lfu.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/lfu/lfu.go -------------------------------------------------------------------------------- /pkg/lfu/lfu_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/lfu/lfu_test.go -------------------------------------------------------------------------------- /pkg/lru/lru.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/lru/lru.go -------------------------------------------------------------------------------- /pkg/lru/lru_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/lru/lru_test.go -------------------------------------------------------------------------------- /pkg/metrics/cache_layer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/cache_layer.go -------------------------------------------------------------------------------- /pkg/metrics/cache_layer_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/cache_layer_test.go -------------------------------------------------------------------------------- /pkg/metrics/collector.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/collector.go -------------------------------------------------------------------------------- /pkg/metrics/collector_noop.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/collector_noop.go -------------------------------------------------------------------------------- /pkg/metrics/collector_noop_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/collector_noop_test.go -------------------------------------------------------------------------------- /pkg/metrics/collector_prometheus.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/collector_prometheus.go -------------------------------------------------------------------------------- /pkg/metrics/collector_prometheus_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/metrics/collector_prometheus_test.go -------------------------------------------------------------------------------- /pkg/metrics/collector_test.go: -------------------------------------------------------------------------------- 1 | package metrics 2 | -------------------------------------------------------------------------------- /pkg/s3fifo/s3fifo.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/s3fifo/s3fifo.go -------------------------------------------------------------------------------- /pkg/s3fifo/s3fifo_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/s3fifo/s3fifo_test.go -------------------------------------------------------------------------------- /pkg/safe/safe.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/safe/safe.go -------------------------------------------------------------------------------- /pkg/safe/safe_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/safe/safe_test.go -------------------------------------------------------------------------------- /pkg/sharded/hasher.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/sharded/hasher.go -------------------------------------------------------------------------------- /pkg/sharded/hasher_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/sharded/hasher_test.go -------------------------------------------------------------------------------- /pkg/sharded/sharded.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/sharded/sharded.go -------------------------------------------------------------------------------- /pkg/sharded/sharded_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/sharded/sharded_test.go -------------------------------------------------------------------------------- /pkg/tinylfu/tinylfu.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/tinylfu/tinylfu.go -------------------------------------------------------------------------------- /pkg/tinylfu/tinylfu_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/tinylfu/tinylfu_test.go -------------------------------------------------------------------------------- /pkg/twoqueue/2q.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/twoqueue/2q.go -------------------------------------------------------------------------------- /pkg/twoqueue/2q_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/twoqueue/2q_test.go -------------------------------------------------------------------------------- /pkg/wtinylfu/wtinylfu.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/wtinylfu/wtinylfu.go -------------------------------------------------------------------------------- /pkg/wtinylfu/wtinylfu_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/pkg/wtinylfu/wtinylfu_test.go -------------------------------------------------------------------------------- /utils.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/utils.go -------------------------------------------------------------------------------- /utils_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samber/hot/HEAD/utils_test.go --------------------------------------------------------------------------------