Skip to main content


This example demonstrates how to setup chat history storage using the RedisByteStore BaseStore integration.


npm install ioredis


import { Redis } from "ioredis";
import { RedisByteStore } from "@langchain/community/storage/ioredis";
import { AIMessage, HumanMessage } from "@langchain/core/messages";

// Define the client and store
const client = new Redis({});
const store = new RedisByteStore({
// Define our encoder/decoder for converting between strings and Uint8Arrays
const encoder = new TextEncoder();
const decoder = new TextDecoder();
* Here you would define your LLM and chat chain, call
* the LLM and eventually get a list of messages.
* For this example, we'll assume we already have a list.
const messages = Array.from({ length: 5 }).map((_, index) => {
if (index % 2 === 0) {
return new AIMessage("ai stuff...");
return new HumanMessage("human stuff...");
// Set your messages in the store
// The key will be prefixed with `message:id:` and end
// with the index.
await store.mset(, index) => [
// Now you can get your messages from the store
const retrievedMessages = await store.mget(["message:id:0", "message:id:1"]);
// Make sure to decode the values
console.log( => decoder.decode(v)));
'{"id":["langchain","AIMessage"],"kwargs":{"content":"ai stuff..."}}',
'{"id":["langchain","HumanMessage"],"kwargs":{"content":"human stuff..."}}'
// Or, if you want to get back all the keys you can call
// the `yieldKeys` method.
// Optionally, you can pass a key prefix to only get back
// keys which match that prefix.
const yieldedKeys = [];
for await (const key of store.yieldKeys("message:id:")) {
// The keys are not encoded, so no decoding is necessary
// Finally, let's delete the keys from the store
// and close the Redis connection.
await store.mdelete(yieldedKeys);

API Reference:

Was this page helpful?

You can also leave detailed feedback on GitHub.