LangGraph Redis 持久化与中间件
为 LangGraph 提供 Redis 检查点、键值存储和 Agent 缓存与记忆中间件。
- Star 数
- ★ 240
- 最近更新
- 5 天前
- License
- MIT
- 主语言
- Python
- FA 评分
- 62/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 平台专用
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 构建 LangGraph 对话流程并需要按 thread 保存、恢复和枚举检查点的 Python 开发者。
- 不适合
- 无法提供 RedisJSON 和 RediSearch 的团队
- 不使用 LangGraph 或 LangChain Agent 的开发者
- 源码审查
- 62/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
这是一个供 Python 项目导入的 Redis 实现库,包含 LangGraph 检查点保存器、Redis Store 和 LangChain Agent 中间件。检查点保存器支持同步、异步和仅保留最新检查点的浅层实现;Store 支持键值存储及可选向量搜索。中间件可为 LangChain Agent 提供语义缓存、工具结果缓存、对话记忆和语义路由,并通过 langchain.agents.create_agent() 接入。数据保存在 Redis 中,首次使用检查点保存器或 Store 时需要调用 setup() 或对应的异步初始化方法来创建索引。该库要求 RedisJSON 与 RediSearch,并可在 Redis 8.0+ 中直接使用这两个模块;它自身不提供托管服务或独立 Agent 界面。
在应用代码中安装 langgraph-checkpoint-redis 并连接 Redis。用 RedisSaver 或 AsyncRedisSaver 写入、读取和列出 LangGraph 检查点,也可选用 ShallowRedisSaver 只保留最新检查点;用 RedisStore 或 AsyncRedisStore 保存键值数据,并按配置建立向量搜索索引。调用 setup()、asetup() 或 Store 的对应初始化方法创建索引。为 LangChain Agent 配置 SemanticCacheMiddleware、ToolResultCacheMiddleware、ConversationMemoryMiddleware 或 SemanticRouterMiddleware,再通过 create_agent() 组合运行。可配置 TTL、读取时刷新过期时间,以及工具缓存的可缓存性规则。
- 构建 LangGraph 对话流程并需要按 thread 保存、恢复和枚举检查点的 Python 开发者。
- 需要跨线程持久化键值记忆,并希望在 Redis 中按向量相似度检索内容的团队。
- 调用成本或延迟较高、希望按语义相似度缓存模型响应的 LangChain Agent 开发者。
- 有确定性工具调用或昂贵 API 计算、需要配置工具结果缓存规则的应用团队。
- 需要在对话上下文中检索并注入相关历史消息的 Agent 开发者。
- 需要通过 Redis TTL 自动清理检查点或 Store 条目,并可刷新过期时间的团队。
如何安装或部署这个 Agent?
需要 Python 项目、可连接的 Redis,以及 RedisJSON 和 RediSearch。README 指定 Python 依赖 redis>=5.2.1、redisvl>=0.5.1 和 langgraph-checkpoint>=2.0.24;Redis 8.0+ 默认包含所需模块,较低版本可使用 Redis Stack 或单独安装模块。安装包:
pip install langgraph-checkpoint-redisREADME 未给出 Python 版本范围。若使用 Azure Managed Redis、Azure Cache for Redis 或 Redis Enterprise,文档建议使用标准 redis.Redis 客户端而不是 RedisCluster;具体连接参数取决于部署端点及 TLS 配置。
如何使用这个 Agent?
先初始化索引,再写入并读取检查点:
from langgraph.checkpoint.redis import RedisSaver
config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
with RedisSaver.from_conn_string("redis://localhost:6379") as saver:
saver.setup()
# 将 LangGraph 生成的 checkpoint、metadata 和新版本写入参数传入 put()
saved_config = saver.put(config, checkpoint, metadata, new_versions)
loaded_checkpoint = saver.get(config)异步应用可导入 langgraph.checkpoint.redis.aio.AsyncRedisSaver,使用 asetup()、aput()、aget() 和 alist()。checkpoint、metadata 与 new_versions 应由 LangGraph 流程提供;README 展示了检查点结构,但没有提供一个完整可独立运行的最小 LangGraph 图示例。使用 Store 时,先创建 RedisStore,调用 setup(),再在应用中使用 Store;启用向量搜索或 TTL 时,在构造函数中传入对应配置。
这个 Agent 有哪些优点和局限?
- 同一库提供完整历史检查点、仅最新检查点的浅层实现,以及同步和异步接口。
- Redis Store 支持可选向量搜索,并与检查点和中间件共享 Redis 部署边界。
- TTL 可用于检查点和 Store,支持读取时刷新;不配置 TTL 时数据默认持久。
- 工具缓存可通过工具元数据、易变参数名、忽略参数名和副作用名称前缀控制。
- 部署必须具备 RedisJSON 与 RediSearch;缺少模块会导致索引创建或检查点操作报错。
- 应用需要自行运行 Python、提供 Redis 连接并在首次使用时初始化索引。
- 文档中的 Azure 与 Redis Enterprise 配置要求使用标准 Redis 客户端,不能照搬 RedisCluster 示例。
- README 没有说明托管服务、支持的 Python 版本范围或独立使用中间件时的完整部署套餐。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| LangGraph Redis 持久化与中间件 当前 | 62 · 存在缺口 | 代码库 / SDK免费 | ★ 240 | 5 天前 | Python | — |
| Oracle AI Developer Hub | 44 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 4.4k | 1 天前 | Jupyter Notebook | — |
| Dynamiq 智能体编排框架 | 61 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 1.1k | 2 天前 | Python | OpenAI API |
| Lang-Agent 可视化 Agent 配置平台 | 50 · 缺口较多 | 网页应用免费 + 模型费 | ★ 338 | 9 个月前 | TypeScript | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
代码库说明 Redis checkpointer、store 与 middleware 的数据写入、索引、TTL 和连接配置,标准客户端及 TLS 设置也有示例;但没有说明检查点或对话内容的加密、访问控制及敏感数据治理,TTL 移除示例还调用内部方法。初始化需显式 setup,但写入、缓存和过期操作没有逐次确认或通用回滚说明。依赖列出版本范围,未见安全审计或漏洞处置证据;发布者身份按要求视为未知,因此来源归属仅有有限支持。
README 提供同步、异步和浅存储示例,也注明 Redis 8 与较旧版本的模块要求及缺失模块会导致操作报错;不过 README 开头的依赖最低版本与 pyproject.toml 不一致(langgraph-checkpoint、redisvl),部分示例使用未在片段中定义的函数或变量。测试配置展示 Redis 容器及可选 API/Sentinel 测试,但没有执行证据;conftest 会忽略普通 Redis 启停、清理错误,失败反馈因此不完整。
材料覆盖持久化检查点、store、向量搜索、TTL、同步/异步调用、Azure/Enterprise 代理配置及多类 middleware,并给出何时缓存与何时跳过缓存的规则。边界说明仍不完整:缓存安全依赖工具元数据与名称/参数启发式,未细讲语义缓存误命中或不同部署能力限制。连接和 Redis 模块要求针对常见环境给出了明确配置。
README 按安装、checkpointer、store、middleware、示例和实现细节组织,安装命令、前置模块、setup 步骤及多种示例均有说明;LICENSE 和 pyproject 均标示 MIT。名称在不同模块中有较一致的同步/异步前缀,但文档所列依赖版本与项目配置不一致。提供了若干限制和配置注意事项,但没有变更日志或清晰的维护责任/更新承诺;作者字段提供组织联系邮箱,不能据此确认维护安排。
该库把 Redis 持久化、向量检索、缓存、语义记忆和路由接入 LangGraph/LangChain,展示了相较基础 checkpointer 的具体扩展价值。示例覆盖面广且配置可复用,但部分示例包含未定义的辅助函数或变量,降低了直接复制可用性;成本、运维负担和缓存质量的量化依据有限。
关键能力、Redis 模块要求、TTL 行为和缓存决策规则在 README 中有具体描述,部分依赖与许可可在 pyproject 和 LICENSE 交叉核对。可见材料没有实现源文件或实际测试结果来逐项佐证 README 行为,徽章也只是声明而非本次评审的验证;文档对环境要求和实现行为有所区分,但推断与已验证事实的标记不够系统。
- 使用前核对 README 与 pyproject.toml 的依赖最低版本差异,并按目标 Redis 部署确认 RedisJSON、RediSearch、TLS 和代理要求。
- 把检查点、对话和缓存视为可能包含敏感数据;材料未说明加密或访问控制策略。TTL 默认关闭,示例中的 TTL 移除调用内部方法。
- 对 middleware 缓存规则和语义相似度行为进行部署侧验证;工具名称及元数据规则不能保证适用于所有副作用或时效性数据。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Changes - chore(release): bumped release version to 0.5.2 (#205) - fix(checkpoint): retry best-effort TTL application to prevent orphaned search index entries (#203) - chore(deps-dev): bump cryptography from 49.0.0 to 50.0.0 (#204) 🐛 Bug Fixes - fix(checkpoint): preserve DeltaChannel snapshots in Redis JSON (#202) Contributors We'd like to thank all the contributors who worked on this release! @LiamCollick, @dependabot, @dependabot[bot] and @limjoobin在 GitHub 查看 ↗ -
发布说明摘录
Changes - chore(deps-dev): bump transformers from 5.0.0rc3 to 5.5.0 (#200) - chore(release): bumped release version to 0.5.1 (#199) 🐛 Bug Fixes - Fix nested set deserialization in JsonPlusRedisSerializer (#198) - fix: escape RediSearch-special characters in store delete queries (#197) Contributors We'd like to thank all the contributors who worked on this release! @dependabot, @dependabot[bot], @jerry153fish and @limjoobin在 GitHub 查看 ↗ -
v0.5.0 0.5.0
发布说明摘录
Changes - chore(release): bumped release version to 0.5.0 (#195) - Use PyPI Trusted Publishing for publishing releases (#194) - Fix: Removed dependency on private constructor helper (#193) - Fix latest checkpoint pointers for custom prefixes (#188) 🐛 Bug Fixes - fix(checkpointer): apply ttl to minimal checkpoint for cancellation (#190) - fix(checkpoint): base64-decode pending send blobs before deserialization (#192) Contributors We'd like to thank all the contributors who worked on this release! @haseeb-m4235, @limjoobin and @zettlt2在 GitHub 查看 ↗
常见问题
使用 Redis 8.0 以上版本还需要单独安装 RedisJSON 和 RediSearch 吗?
检查点或 Store 数据会自动过期吗?
default_ttl,并通过 refresh_on_read 在读取时刷新过期时间。可以只保存每个线程的最新检查点吗?
ShallowRedisSaver,异步版本为 AsyncShallowRedisSaver;它们只保存最新检查点。能否在 Azure Managed Redis 或 Redis Enterprise 上使用?
redis.Redis 客户端,不要使用 RedisCluster。相关服务通常要求 TLS,模块也需在创建时选用。