喜马拉雅 Redis 与 Pika 缓存使用军规

兄弟姐妹们,请说下,喜马拉雅 Redis 与 Pika 缓存使用军规
最新回答
梦的河流

2025-03-02 05:04:36

缓存作为喜马拉雅的重要基础组件,承载着业务请求量,其稳定性和高效运行是我们关注的重点。本文分享我们总结的缓存使用规范,帮助大家避免踩坑。

喜马线上缓存类型包括 redis 主从模式、codis-redis、云数据库 redis 和 xcache。根据业务需求选择缓存类型,cache 模式适用于不需要持久化数据的场景,store 模式适用于需要持久化数据的场景。云数据库 redis 适合大规模集群部署,支持故障自动恢复和弹性伸缩。codis redis 适用于数据持久化需求,且对延时要求高。xcache 适合海量 KV 存储,支持数据持久化。

避免使用客户端分片模式,推荐使用集群模式以实现高可用和弹性伸缩。集群模式不支持 lua、redisson 客户端,业务需要时只能选择 redis 主从模式。redis 单节点容量限制为 10GB,xcache 单节点容量限制为 200GB,超过限制会延长实例重启时间。

键值设计应简洁、可读、可管理,以业务名或数据库名作为前缀,避免特殊字符。限制 key 长度、大小和元素数量,避免热点 key。控制 key 生命周期,设置 ttl,并分散 key 过期时间。

谨慎使用全量操作命令,避免使用 `keys *`、hgetall、smembers 等命令,推荐使用 scan 命令分次获取。限制 mset、mget、hmset、hmget、*scan、*range 命令单次操作元素数量,控制 pipeline 命令数量,使用 unlink 命令异步删除 key。setex 命令可以减少服务端写压力,使用 evalsha 代替 eval。

redis 不支持逻辑 db,使用默认 db0,避免多业务复用同一缓存资源。xcache 优先使用 string 类型,减少 lua 脚本使用,避免复杂逻辑在 lua 中执行。采用高效序列化和压缩方法,限制批量任务流量,评估业务变更对缓存的影响,及时回收不用的资源。

通过上述规范,可以更有效地利用缓存资源,提升系统性能和稳定性。希望这些经验能为您的缓存实践提供指导。