核心用法
Memory Cache 提供了一套标准化的 Redis 缓存封装方案,通过 Shell 脚本封装 Python 实现,降低直接使用 Redis CLI 的复杂度。
存储与检索
- 键值存储:
bash $WORKSPACE/skills/memory-cache/scripts/cache.sh set mema:cache:<name> <value> [--ttl 3600] - 数据读取:
bash $WORKSPACE/skills/memory-cache/scripts/cache.sh get mema:cache:<name>
管理操作
- 键扫描:
scan [pattern]—— 使用 RedisSCAN替代KEYS,避免阻塞生产实例 - 连通性检测:
ping
命名空间规范
强制 mema: 前缀确保数据库隔离:
mema:context:*—— 临时会话上下文mema:cache:*—— 通用 API/任务缓存mema:state:*—— 跨会话持久状态
显著优点
1. 操作安全性:采用 SCAN 命令而非 KEYS,防止大数据量环境下的性能阻塞
2. 环境隔离:独立 Python 虚拟环境(.venv),依赖与系统解耦
3. 路径可移植:使用 $WORKSPACE 变量,适配不同部署环境
4. TTL 原生支持:无需额外实现过期清理逻辑
潜在局限
- 外部依赖强:必须预置 Redis 服务和
REDIS_URL环境变量 - 二进制依赖:依赖主机系统的
python3,容器化场景需额外处理 - 功能边界:仅覆盖基础 KV 操作,不支持高级数据结构(Pub/Sub、Stream、Lua 脚本)
- 无持久化策略:纯缓存用途,关键数据需外部持久化
适合人群
- OpenClaw Agent 开发者需快速集成会话状态管理
- 微服务场景下需轻量级 API 结果缓存层
- 多 Agent 共享状态的中等规模部署
常规风险
| 风险类型 | 说明 |
|---------|------|
| 连接泄露 | 脚本异常退出可能导致连接未关闭(依赖 Redis 服务端超时) |
| 密钥暴露 | `REDIS_URL` 含认证信息,`.env` 文件权限需严格控制 |
| 命名空间冲突 | 未强制校验 `mema:` 前缀,误操作可能污染其他数据 |
| TTL 误配 | 未设置 TTL 的键将永久驻留,需配合主动清理策略 |