UpstashRedisEntityStore Class — langchain Architecture
Architecture documentation for the UpstashRedisEntityStore class in entity.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 65c1d19b_b721_7b61_7b71_c0d54a3a49e7["UpstashRedisEntityStore"] d6a371b0_afe3_1ceb_cd58_c254c31b562e["BaseEntityStore"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|extends| d6a371b0_afe3_1ceb_cd58_c254c31b562e 1ed59830_902e_f3ce_f9f6_76963a6fd122["entity.py"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|defined in| 1ed59830_902e_f3ce_f9f6_76963a6fd122 d11783a0_d6d8_0a95_fa5a_83d372212579["__init__()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| d11783a0_d6d8_0a95_fa5a_83d372212579 53efda6e_ce4c_bff1_5482_a930bf1f68ac["full_key_prefix()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| 53efda6e_ce4c_bff1_5482_a930bf1f68ac 47be7f01_ba5d_4891_2980_e37bcc14d40c["get()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| 47be7f01_ba5d_4891_2980_e37bcc14d40c 8eee5fac_e6eb_2013_f654_4a2c0c4ce3bd["set()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| 8eee5fac_e6eb_2013_f654_4a2c0c4ce3bd c0642ef4_bd51_0d06_6d67_265cf067aeaa["delete()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| c0642ef4_bd51_0d06_6d67_265cf067aeaa 6c8d475b_0f36_5deb_090a_14caeed7002a["exists()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| 6c8d475b_0f36_5deb_090a_14caeed7002a 33aac564_78c0_a01d_38c8_0a4c9755f4c3["clear()"] 65c1d19b_b721_7b61_7b71_c0d54a3a49e7 -->|method| 33aac564_78c0_a01d_38c8_0a4c9755f4c3
Relationship Graph
Source Code
libs/langchain/langchain_classic/memory/entity.py lines 104–208
class UpstashRedisEntityStore(BaseEntityStore):
"""Upstash 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.
"""
def __init__(
self,
session_id: str = "default",
url: str = "",
token: str = "",
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.
token: Authentication token for 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:
from upstash_redis import Redis
except ImportError as e:
msg = (
"Could not import upstash_redis python package. "
"Please install it with `pip install upstash_redis`."
)
raise ImportError(msg) from e
super().__init__(*args, **kwargs)
try:
self.redis_client = Redis(url=url, token=token)
except Exception as exc:
error_msg = "Upstash Redis instance could not be initiated"
logger.exception(error_msg)
raise RuntimeError(error_msg) from exc
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(
"Upstash Redis MEM get '%s:%s': '%s'", self.full_key_prefix, key, res
)
return res
@override
def set(self, key: str, value: str | None) -> None:
if not value:
return self.delete(key)
self.redis_client.set(f"{self.full_key_prefix}:{key}", value, ex=self.ttl)
logger.debug(
"Redis MEM set '%s:%s': '%s' EX %s",
self.full_key_prefix,
key,
value,
self.ttl,
Extends
Source
Frequently Asked Questions
What is the UpstashRedisEntityStore class?
UpstashRedisEntityStore is a class in the langchain codebase, defined in libs/langchain/langchain_classic/memory/entity.py.
Where is UpstashRedisEntityStore defined?
UpstashRedisEntityStore is defined in libs/langchain/langchain_classic/memory/entity.py at line 104.
What does UpstashRedisEntityStore extend?
UpstashRedisEntityStore extends BaseEntityStore.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free