用途:在 Bun 运行时中集成 Redis,处理缓存、发布/订阅、会话存储与键值操作。
客户端选择:自托管 Redis 用 ioredis(bun add ioredis);Serverless/Edge 用 @upstash/redis(bun add @upstash/redis);官方 Node 客户端用 redis(bun add redis)。
ioredis 连接:可直接 new Redis(),或传入 host、port、password、db 选项,也可用连接字符串 redis://:password@localhost:6379/0,TLS 连接加 tls: {}。
主要能力:字符串操作(set、setex、get、incr、del、exists、expire、ttl);数据结构包括 Hash(hset、hget、hgetall、hincrby)、List(rpush、lpush、lpop、blpop、lrange)、Set(sadd、sismember、smembers、sinter、sunion)、Sorted Set(zadd、zrevrange、zrangebyscore、zincrby);RedisJSON 需模块支持,通过 call 执行 JSON.SET/JSON.GET。
发布订阅:一个连接订阅(subscribe、psubscribe),另一个连接发布(publish),监听 message 与 pmessage 事件。
事务与管道:multi().exec() 提供原子事务;pipeline() 无原子性但性能更好。
Upstash:用 url 与 token 初始化,API 与 ioredis 类似,并支持自动 JSON 序列化。
常见模式:Cache-Aside(先查缓存,未命中查库并 setex 回填)、Write-Through(先更新库再更新缓存)、限流(incr 配合 expire 计数)、会话存储(hgetall/hset 加 expire)。
常见错误:ECONNREFUSED 表示 Redis 未运行;NOAUTH 需提供密码;WRONGTYPE 表示键类型不符;OOM 需配置 maxmemory。
限制:资料未提供版本要求、性能基准、价格或平台兼容性细节;RedisJSON 需额外模块;集群、Sentinel 与 Lua 脚本仅在参考文件提示中提及,正文未展开。