# elixir_cache v0.5.0 - Table of Contents

> Standardized and testable caching across your app. In test caches are isolated.

## Pages

- Getting Started
  - [Introduction to ElixirCache](introduction.md)

- Tutorials
  - [Installation](installation.md)
  - [Basic Cache Operations](basic_operations.md)
  - [Advanced Cache Techniques](advanced_techniques.md)

- How-to Guides
  - [Using Strategy Adapters](using_strategies.md)
  - [How to Choose the Right Cache Adapter](choosing_adapter.md)
  - [How to Set Up Redis Caching](redis_setup.md)
  - [How to Test Applications Using ElixirCache](testing_with_cache.md)
  - [How to Use Metrics and Telemetry with ElixirCache](using_metrics.md)

- Explanation
  - [Architecture and Core Concepts](architecture.md)

- Reference
  - [API Reference](api.md)

- Changelog
  - [0.5.0](changelog.md)

## Modules

- [Cache.MultiLayer.Coordinator](Cache.MultiLayer.Coordinator.md): Per-node coordinator for cross-node layer coherence in `Cache.MultiLayer`.

- Main
  - [Cache](Cache.md): # ElixirCache
[![Hex version badge](https://img.shields.io/hexpm/v/elixir_cache.svg)](https://hex.pm/packages/elixir_cache)
[![Test](https://github.com/MikaAK/elixir_cache/actions/workflows/test.yml/badge.svg)](https://github.com/MikaAK/elixir_cache/actions/workflows/test.yml)
[![Credo](https://github.com/MikaAK/elixir_cache/actions/workflows/credo.yml/badge.svg)](https://github.com/MikaAK/elixir_cache/actions/workflows/credo.yml)
[![Dialyzer](https://github.com/MikaAK/elixir_cache/actions/workflows/dialyzer.yml/badge.svg)](https://github.com/MikaAK/elixir_cache/actions/workflows/dialyzer.yml)
[![Coverage](https://github.com/MikaAK/elixir_cache/actions/workflows/test.yml/badge.svg)](https://github.com/MikaAK/elixir_cache/actions/workflows/test.yml)
  - [Cache.Metrics](Cache.Metrics.md): Add the following metrics for elixir_cache into [prometheus_telmetery](https://hexdocs.pm/prometheus_telemetry),
this module will only be included if the library is included

- Adapters
  - [Cache.Agent](Cache.Agent.md): This module is the Agent adapter. Very lightweight use only

  - [Cache.ConCache](Cache.ConCache.md): ETS Based cache https://github.com/sasa1977/con_cache
  - [Cache.Counter](Cache.Counter.md): Atomic integer counter adapter backed by Erlang's `:counters` module.
  - [Cache.DETS](Cache.DETS.md): DETS adapter so that we can use dets as a cache
  - [Cache.ETS](Cache.ETS.md): ETS (Erlang Term Storage) adapter for high-performance in-memory caching.
  - [Cache.PersistentTerm](Cache.PersistentTerm.md): `:persistent_term` adapter for storing rarely-written, frequently-read cached values.
  - [Cache.Redis](Cache.Redis.md): Redis adapter for distributed caching with ElixirCache.

- Strategies
  - [Cache.HashRing](Cache.HashRing.md): Consistent hash ring strategy adapter using `libring`.
  - [Cache.MultiLayer](Cache.MultiLayer.md): Multi-layer caching strategy that cascades through multiple cache layers.
  - [Cache.RefreshAhead](Cache.RefreshAhead.md): Refresh-ahead caching strategy that proactively refreshes values before they expire.
  - [Cache.Strategy](Cache.Strategy.md): Behaviour for strategy-based cache adapters.

- Test Utils
  - [Cache.CaseTemplate](Cache.CaseTemplate.md): A reusable ExUnit case template for applications using `elixir_cache`.
  - [Cache.Sandbox](Cache.Sandbox.md): Sandbox adapter for isolated testing of applications using ElixirCache.
  - [Cache.SandboxRegistry](Cache.SandboxRegistry.md): This module is used to start the sandbox registry and register caches in test mode

