首页龙虾技能列表 › Redis — 高效缓存、队列和数据结构管理

🔴 Redis — 高效缓存、队列和数据结构管理

v1.0.0

使用 Redis 实现高效的缓存、队列和数据结构管理,包括合理的过期和持久化策略。提供最佳实践指南,涵盖数据结构选择、原子性操作、发布订阅模式、持久化配置、内存管理、集群使用等方面的指导。

4· 2,100·18 当前·18 累计
by @ivangdavila (Iván)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
本技能为 Redis 最佳实践指南,仅包含指令,无隐藏安装或凭证请求。确保在执行指令前考虑安全风险,尤其是当代理可以访问 Redis 实例时。
评估建议
这是一个连贯的、仅包含指令的 Redis 最佳实践指南,无隐藏安装或凭证请求。执行前请考虑:如果代理可以运行 `redis-cli` 或访问 Redis 服务器,它可能会修改数据或通过 `EVAL` 执行任意 Lua 脚本。为限制风险,请隔离生产环境、避免提供凭证或仅允许读取/监控访问。...
详细分析 ▾
用途与能力
名称、描述和声明的依赖(可选的 redis-cli)与内容一致:缓存、队列、数据结构、过期、持久化、集群和内存管理。无与操作 Redis 无关的请求。
指令范围
SKILL.md 仅包含 Redis 使用指南和示例命令(SET、EXPIRE、XADD、EVAL 等)。不指示读取无关文件、拉取外部 URL 或访问无关环境变量。注意:它建议使用 EVAL(Lua)和其他强大命令——如果代理实际执行这些命令对可达的 Redis 实例,命令将以 Redis 连接的权限运行。
安装机制
无安装规格 — 仅指令技能。技能本身无下载或写入磁盘的操作。
凭证需求
无环境变量、凭证或配置路径被请求。列出的单个二进制(redis-cli)适合声明的目的。
持久化与权限
技能不请求永久存在,不修改其他技能,并使用默认调用设置。它是用户可调用且不总是启用的。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

🖥️ OSLinux · macOS · Windows

版本

latestv1.0.02026/2/10

初始发布

● 无害

安装命令 点击复制

官方npx clawhub@latest install redis-store
镜像加速npx clawhub@latest install redis-store --registry https://cn.clawhub-mirror.com

技能文档

过期机制(内存泄漏)

  • 没有 TTL 的键会永久存在——给每个缓存键设置过期时间:SET key value EX 3600
  • SET 后无法单独添加 TTL——使用 SETEXSET ... EX
  • EXPIRE 在键更新时默认重置——SET 会移除 TTL;使用 SET ... KEEPTTL(Redis 6+)
  • 惰性过期:过期键在访问时才被删除——可能占用内存直到被访问
  • 大数据库中使用 SCAN:过期键在清理周期运行前仍会显示

被低估的数据结构

  • 有序集合做限流:ZADD limits:{user} {now} {request_id} + ZREMRANGEBYSCORE 实现滑动窗口
  • HyperLogLog 做唯一计数:PFADD visitors {ip},数十亿唯一值仅需 12KB
  • Streams 做队列:XADDXREADXACK——比 LIST 更适合可靠队列
  • Hash 存对象:HSET user:1 name "Alice" email "a@b.com"——比 JSON 字符串更省内存

原子性陷阱

  • GET 然后 SET 不是原子操作——其他客户端可能在中间修改;使用 INCRSETNX 或 Lua
  • SETNX 做锁:SET lock:resource {token} NX EX 30——NX = 仅在不存在时设置
  • WATCH/MULTI/EXEC 做乐观锁——如果被监视的键被修改,事务会中止
  • Lua 脚本是原子的——用于复杂操作:EVAL "script" keys args

Pub/Sub 限制

  • 消息不持久——断开连接的订阅者会错过消息
  • 最多一次投递——无确认、无重试
  • 使用 Streams 做可靠消息传递——XREAD BLOCK + XACK 模式
  • 集群中的 Pub/Sub:消息发送到所有节点——可用但会增加开销

持久化配置

  • RDB(快照):恢复快,但快照之间可能丢数据——默认每 5 分钟
  • AOF(追加日志):数据丢失少,恢复慢——appendfsync everysec 是好的平衡
  • 两者都关闭 = 纯缓存——如果数据可以重新生成则可接受
  • BGSAVE 手动快照——不阻塞但会 fork 进程,需要足够内存

内存管理(关键)

  • 必须设置 maxmemory——否则 Redis 会用完所有 RAM,然后 swap = 灾难
  • 淘汰策略:allkeys-lru 用于缓存,volatile-lru 用于混合,noeviction 用于持久数据
  • INFO memory 显示使用情况——监控 used_memorymaxmemory
  • 大键影响淘汰——一个 1GB 的键淘汰效果差;优先使用多个小键

集群

  • 哈希槽:键按哈希分布——多键操作需要在同一槽
  • 哈希标签:{user:1}:profile{user:1}:sessions 在同一槽——用于关联键
  • 不支持跨槽 MGET/MSET——除非所有键在同一槽,否则报错
  • MOVED 重定向:客户端必须跟随——使用支持集群的客户端库

常见模式

  • 缓存旁路:查 Redis,未命中 → 查数据库 → 写 Redis——标准缓存
  • 写穿透:同时写数据库和 Redis——保持缓存新鲜
  • 限流器:INCR requests:{ip}:{minute}EXPIRE——简单固定窗口
  • 分布式锁:SET ... NX EX + 唯一 token——释放时验证 token

连接管理

  • 连接池:复用连接——创建连接开销大
  • 管道命令:批量发送不等响应——减少往返次数
  • 关闭时 QUIT——优雅断开
  • Sentinel 或 Cluster 做高可用——单 Redis 是单点故障

常见错误

  • 缓存键没有 TTL——内存增长直到 OOM
  • 作为主数据库但不开启持久化——重启后数据丢失
  • 单线程 Redis 中使用阻塞操作——KEYS * 会阻塞一切;使用 SCAN
  • 存储大对象——Redis 在内存中运行;100MB 的值很昂贵
  • 忽略 maxmemory——没有限制的生产 Redis 会崩溃主机
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务