# `Grizzly.Storage.Adapter`
[🔗](https://github.com/smartrent/grizzly/blob/v9.1.4/lib/grizzly/storage/adapter.ex#L1)

Behaviour for Grizzly storage adapters.

Implementations should be compatible with `PropertyTable`.

# `adapter_options`

```elixir
@type adapter_options() :: any()
```

The argument passed to the storage adapter. See `Grizzly.Options`.

# `delete_matches`

```elixir
@callback delete_matches(adapter_options(), Grizzly.Storage.pattern()) :: :ok
```

Delete keys matching a pattern.

# `get`

```elixir
@callback get(adapter_options(), Grizzly.Storage.key()) :: Grizzly.Storage.value()
```

Get a value from storage by key.

# `match`

```elixir
@callback match(adapter_options(), Grizzly.Storage.pattern()) :: [
  {Grizzly.Storage.key(), Grizzly.Storage.value()}
]
```

Match keys in storage against a pattern.

# `put`

```elixir
@callback put(adapter_options(), Grizzly.Storage.key(), Grizzly.Storage.value()) :: :ok
```

Put a key-value pair into storage.

# `put_many`

```elixir
@callback put_many(adapter_options(), [{Grizzly.Storage.key(), Grizzly.Storage.value()}]) ::
  :ok
```

Put multiple key-value pairs into storage.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
