RedisEntityStore Class — langchain Architecture
Architecture documentation for the RedisEntityStore class in entity.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD c539be70_4b09_e675_2ee4_a53dadca5460["RedisEntityStore"] d6a371b0_afe3_1ceb_cd58_c254c31b562e["BaseEntityStore"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|extends| d6a371b0_afe3_1ceb_cd58_c254c31b562e 1ed59830_902e_f3ce_f9f6_76963a6fd122["entity.py"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|defined in| 1ed59830_902e_f3ce_f9f6_76963a6fd122 15f72ac1_48c7_e4d4_46d0_ef4e3a39c901["__init__()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| 15f72ac1_48c7_e4d4_46d0_ef4e3a39c901 c791716d_3809_7b67_d208_a5c3252d0cc0["full_key_prefix()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| c791716d_3809_7b67_d208_a5c3252d0cc0 09510174_d954_7a6b_5dbb_826011d7072f["get()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| 09510174_d954_7a6b_5dbb_826011d7072f 2e114e1c_3610_cc07_2105_0273d9788c9e["set()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| 2e114e1c_3610_cc07_2105_0273d9788c9e 243a8f75_3643_df4b_c406_a947cdc7d0af["delete()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| 243a8f75_3643_df4b_c406_a947cdc7d0af 50bc4ae1_8e25_46d8_33bc_109fb37f2ff8["exists()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| 50bc4ae1_8e25_46d8_33bc_109fb37f2ff8 c0299cc2_b89a_c73d_6f9e_8a2e27823eb4["clear()"] c539be70_4b09_e675_2ee4_a53dadca5460 -->|method| c0299cc2_b89a_c73d_6f9e_8a2e27823eb4
Relationship Graph
Source Code
libs/langchain/langchain_classic/memory/entity.py lines 219–332
class RedisEntityStore(BaseEntityStore):
"""Redis-backed Entity store.
Entities get a TTL of 1 day by default, and
that TTL is extended by 3 days every time the entity is read back.
"""
redis_client: Any
session_id: str = "default"
key_prefix: str = "memory_store"
ttl: int | None = 60 * 60 * 24
recall_ttl: int | None = 60 * 60 * 24 * 3
def __init__(
self,
session_id: str = "default",
url: str = "redis://localhost:6379/0",
key_prefix: str = "memory_store",
ttl: int | None = 60 * 60 * 24,
recall_ttl: int | None = 60 * 60 * 24 * 3,
*args: Any,
**kwargs: Any,
):
"""Initializes the RedisEntityStore.
Args:
session_id: Unique identifier for the session.
url: URL of the Redis server.
key_prefix: Prefix for keys in the Redis store.
ttl: Time-to-live for keys in seconds (default 1 day).
recall_ttl: Time-to-live extension for keys when recalled (default 3 days).
*args: Additional positional arguments.
**kwargs: Additional keyword arguments.
"""
try:
import redis
except ImportError as e:
msg = (
"Could not import redis python package. "
"Please install it with `pip install redis`."
)
raise ImportError(msg) from e
super().__init__(*args, **kwargs)
try:
from langchain_community.utilities.redis import get_client
except ImportError as e:
msg = (
"Could not import langchain_community.utilities.redis.get_client. "
"Please install it with `pip install langchain-community`."
)
raise ImportError(msg) from e
try:
self.redis_client = get_client(redis_url=url, decode_responses=True)
except redis.exceptions.ConnectionError:
logger.exception("Redis client could not connect")
self.session_id = session_id
self.key_prefix = key_prefix
self.ttl = ttl
self.recall_ttl = recall_ttl or ttl
@property
def full_key_prefix(self) -> str:
"""Returns the full key prefix with session ID."""
return f"{self.key_prefix}:{self.session_id}"
@override
def get(self, key: str, default: str | None = None) -> str | None:
res = (
self.redis_client.getex(f"{self.full_key_prefix}:{key}", ex=self.recall_ttl)
or default
or ""
)
logger.debug("REDIS MEM get '%s:%s': '%s'", self.full_key_prefix, key, res)
return res
@override
def set(self, key: str, value: str | None) -> None:
Extends
Source
Frequently Asked Questions
What is the RedisEntityStore class?
RedisEntityStore is a class in the langchain codebase, defined in libs/langchain/langchain_classic/memory/entity.py.
Where is RedisEntityStore defined?
RedisEntityStore is defined in libs/langchain/langchain_classic/memory/entity.py at line 219.
What does RedisEntityStore extend?
RedisEntityStore extends BaseEntityStore.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free