> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langchain.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Store integrations

> Integrate with stores using LangChain JavaScript.

## Overview

LangChain provides a key-value store interface for storing and retrieving data by key. The key-value store interface in LangChain is primarily used for caching [embeddings](/oss/javascript/integrations/embeddings).

## Interface

All [`BaseStores`](https://reference.langchain.com/javascript/langchain-core/stores/BaseStore) are **generic** and support the following interface, where `K` represents the key type and `V` represents the value type:

* `mget(keys: K[]): Promise<(V | undefined)[]>`: get the values for multiple keys, returning `undefined` if a key does not exist
* `mset(keyValuePairs: [K, V][]): Promise<void>`: set the values for multiple keys
* `mdelete(keys: K[]): Promise<void>`: delete multiple keys
* `yieldKeys(prefix?: string): AsyncGenerator<K | string>`: asynchronously yield all keys in the store, optionally filtering by a prefix

The generic nature of the interface allows you to use different types for keys and values. For example, `BaseStore<string, BaseMessage>` would store messages with string keys, while `BaseStore<string, number[]>` would store arrays of numbers.

<Note>
  Base stores are designed to work with **multiple** key-value pairs at once for efficiency. This saves on network round-trips and may allow for more efficient batch operations in the underlying store.
</Note>

## Built-in stores for local development

<Columns cols={2}>
  <Card title="InMemoryStore" icon="link" href="/oss/javascript/integrations/stores/in_memory" arrow="true" cta="View guide" />

  <Card title="LocalFileStore" icon="link" href="/oss/javascript/integrations/stores/file_system" arrow="true" cta="View guide" />
</Columns>

## Custom stores

You can also implement your own custom store by extending the [`BaseStore`](https://reference.langchain.com/javascript/langchain-core/stores/BaseStore) class. See the [store interface documentation](https://reference.langchain.com/javascript/langchain-core/stores/BaseStore) for more details.

## All integrations

<Columns cols={3}>
  <Card title="Cassandra KV" icon="link" href="/oss/javascript/integrations/stores/cassandra_storage" arrow="true" cta="View guide" />

  <Card title="IORedis" icon="link" href="/oss/javascript/integrations/stores/ioredis_storage" arrow="true" cta="View guide" />

  <Card title="Upstash Redis" icon="link" href="/oss/javascript/integrations/stores/upstash_redis_storage" arrow="true" cta="View guide" />

  <Card title="Vercel KV" icon="link" href="/oss/javascript/integrations/stores/vercel_kv_storage" arrow="true" cta="View guide" />
</Columns>

***

<div className="source-links">
  <Callout icon="terminal-2">
    [Connect these docs](/use-these-docs) to Claude, VSCode, and more via MCP for real-time answers.
  </Callout>

  <Callout icon="edit">
    [Edit this page on GitHub](https://github.com/langchain-ai/docs/edit/main/src/oss/javascript/integrations/stores/index.mdx) or [file an issue](https://github.com/langchain-ai/docs/issues/new/choose).
  </Callout>
</div>
