# EncoderBackedStore

> **Class** in `langchain_classic`

📖 [View in docs](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore)

Wraps a store with key and value encoders/decoders.

Examples that uses JSON for encoding/decoding:

```python
import json

def key_encoder(key: int) -> str:
    return json.dumps(key)

def value_serializer(value: float) -> str:
    return json.dumps(value)

def value_deserializer(serialized_value: str) -> float:
    return json.loads(serialized_value)

# Create an instance of the abstract store
abstract_store = MyCustomStore()

# Create an instance of the encoder-backed store
store = EncoderBackedStore(
    store=abstract_store,
    key_encoder=key_encoder,
    value_serializer=value_serializer,
    value_deserializer=value_deserializer,
)

# Use the encoder-backed store methods
store.mset([(1, 3.14), (2, 2.718)])
values = store.mget([1, 2])  # Retrieves [3.14, 2.718]
store.mdelete([1, 2])  # Deletes the keys 1 and 2
```

## Signature

```python
EncoderBackedStore(
    self,
    store: BaseStore[str, Any],
    key_encoder: Callable[[K], str],
    value_serializer: Callable[[V], bytes],
    value_deserializer: Callable[[Any], V],
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `store` | `BaseStore[str, Any]` | Yes | The underlying byte store to wrap. |
| `key_encoder` | `Callable[[K], str]` | Yes | Function to encode keys from type `K` to strings. |
| `value_serializer` | `Callable[[V], bytes]` | Yes | Function to serialize values from type `V` to bytes. |
| `value_deserializer` | `Callable[[Any], V]` | Yes | Function to deserialize bytes back to type V. |

## Extends

- `BaseStore[K, V]`

## Constructors

```python
__init__(
    self,
    store: BaseStore[str, Any],
    key_encoder: Callable[[K], str],
    value_serializer: Callable[[V], bytes],
    value_deserializer: Callable[[Any], V],
) -> None
```

| Name | Type |
|------|------|
| `store` | `BaseStore[str, Any]` |
| `key_encoder` | `Callable[[K], str]` |
| `value_serializer` | `Callable[[V], bytes]` |
| `value_deserializer` | `Callable[[Any], V]` |


## Properties

- `store`
- `key_encoder`
- `value_serializer`
- `value_deserializer`

## Methods

- [`mget()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/mget)
- [`amget()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/amget)
- [`mset()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/mset)
- [`amset()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/amset)
- [`mdelete()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/mdelete)
- [`amdelete()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/amdelete)
- [`yield_keys()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/yield_keys)
- [`ayield_keys()`](https://reference.langchain.com/python/langchain-classic/storage/encoder_backed/EncoderBackedStore/ayield_keys)

---

[View source on GitHub](https://github.com/langchain-ai/langchain/blob/02991cb4cf2063d51a07268edafb05fe53de1826/libs/langchain/langchain_classic/storage/encoder_backed.py#L13)