一、键Key通用命令命令用法示例时间复杂度典型应用场景注意事项DELDEL session:abc123O(1) (小key)O(N) (大key内部元素)删除缓存、过期会话、临时数据删除大集合如百万级Set会阻塞改用UNLINK异步删除EXISTSEXISTS cache:user:1O(1)判断缓存是否命中限流前检查是否存在可批量EXISTS key1 key2减少网络往返EXPIRE/TTLEXPIRE captcha:phone 300TTL captcha:phoneO(1)验证码、限时优惠、临时Token自动失效设置过期时间避免内存无限增长PERSISTPERSIST blacklist:ipO(1)解除永久封禁或永久存储某个key移除过期时间key变成永久RENAMERENAME old_key new_keyO(1)平滑迁移key名称、修复命名不规范若新key已存在会被覆盖用RENAMENX安全重命名TYPETYPE order:123O(1)调试或程序判断数据类型分支处理不同数据类型操作命令不同避免类型错误二、String字符串命令命令用法示例时间复杂度典型应用场景注意事项SET/GETSET article:100 content...GET article:100O(1)缓存网页、JSON对象、配置项、分布式锁SET NX EX实现锁value最大512MBMSET/MGETMSET user:1 John user:2 TomMGET user:1 user:2O(N)批量读取/写入用户信息、预加载缓存减少网络IO原子操作INCR/DECRINCR page:home:viewsDECR stock:sku:123O(1)计数器阅读数、点赞数、库存扣减原子操作无需担心并发key不存在从0开始INCRBYFLOATINCRBYFLOAT account:1000 balance 0.5O(1)账户余额、商品评分、利率计算浮点精度符合IEEE 754SETEXSETEX sms:code:13800138000 60 123456O(1)短信验证码、限时Token60秒有效原子设置值过期时间APPENDAPPEND log:error new error\nO(1)累积日志、拼接字符串如构建长文本若key不存在则创建STRLENSTRLEN cache:htmlO(1)检查缓存内容长度用于分片或预警返回字节数中文需注意编码三、Hash哈希命令命令用法示例时间复杂度典型应用场景注意事项HSET/HGETHSET user:1000 name Alice age 30HGET user:1000 nameO(1)存储对象用户资料、商品详情、配置比String序列化更灵活可单独修改字段HMSET/HMGETHMSET product:200 name iPhone price 5999HMGET product:200 name priceO(N)批量设置/读取对象多个字段减少请求次数推荐使用HINCRBYHINCRBY user:1000 score 5O(1)用户积分、文章点赞数、购物车数量字段不存在自动创建并从0开始HGETALLHGETALL user:1000O(N)小对象全量获取如用户会话信息❌ 大Hash禁用否则阻塞Redis改用HSCANHDELHDEL user:1000 ageO(1)删除对象的某个属性如移除用户头像支持多字段删除HDEL key f1 f2 f3HLENHLEN user:1000O(1)统计对象字段个数如购物车商品种类数快速获取field数量四、List列表命令命令用法示例时间复杂度典型应用场景注意事项LPUSHRPOPLPUSH queue taskRPOP queueO(1)队列先进先出任务队列、消息队列无阻塞消费者需轮询或使用BRPOPRPUSHLPOP同上方向相反O(1)栈后进先出最新评论、操作历史实际上即RPUSHRPOP或LPUSHLPOPBLPOP/BRPOPBRPOP queue 30O(1)阻塞队列生产者-消费者模式、延迟消息超时时间内等待元素到达避免空轮询LRANGELRANGE comments 0 9O(SN)分页最新评论列表、消息流的前10条避免取全量0 -1大列表分页性能好LTRIMLTRIME logs 0 99O(N)定长日志保留最近100条操作日志配合RPUSH使用控制内存LINDEXLINDEX queue 0O(N)查看队首/队尾元素而不弹出如预览频繁随机访问不推荐List底层是链表LLENLLEN queueO(1)获取队列待处理任务数、监控积压快速长度获取五、Set集合命令命令用法示例时间复杂度典型应用场景注意事项SADD/SREMSADD article:1 tags redis databaseSREM article:1 tags databaseO(1)标签系统、用户关注、点赞集合自动去重SADD已存在成员忽略SISMEMBERSISMEMBER blacklist ip 192.168.1.1O(1)判重黑名单校验、是否已点赞高效判断元素是否存在SMEMBERSSMEMBERS article:1:likesO(N)小集合全量获取如某文章点赞用户很少❌ 大集合禁用用SSCAN迭代SCARDSCARD online:usersO(1)统计在线人数、集合基数快速获取集合大小SINTERSINTER user:1:friends user:2:friendsO(N*M)共同好友、共同关注、权限交集结果集过大可用SINTERSTORE存临时keySUNIONSUNION tag:redis tag:databaseO(N*M)合并标签、多源数据联合查询同样注意结果集大小SDIFFSDIFF group:A group:BO(N*M)差集A组有但B组没有的用户如增量推送返回差集结果SPOPSPOP lottery 3O(1) (count1)抽奖不放回随机抽取中奖用户移除并返回SRANDMEMBER是不移除版本SRANDMEMBERSRANDMOLDER ad:pool 5O(1) (count1)随机推荐、广告轮播有放回可用于每日签到随机奖励六、Zset有序集合命令命令用法示例时间复杂度典型应用场景注意事项ZADDZADD leaderboard 100 playerA 95 playerBO(log N)排行榜游戏积分、销售额、热搜榜分数相同时按字典序排列ZINCRBYZINCRBY leaderboard 5 playerAO(log N)实时更新积分如玩家击杀5分不存在成员则添加并设置增量分数ZRANGE/ZREVRANGEZREVRANGE leaderboard 0 9 WITHSCORESO(log N M)获取Top N榜单降序前三ZREVRANGE分数从高到低ZRANGEBYSCOREZRANGEBYSCORE salary 3000 5000 LIMIT 0 10O(log N M)按分数范围分页筛选价格区间商品支持-inf/inf(3000表示不包含边界ZRANK/ZREVRANKZRANK leaderboard playerAO(log N)查询用户当前排名如“您的排名第X”ZREVRANK分数最高的返回0ZSCOREZSCORE leaderboard playerAO(1)获取用户当前积分/分数快速取值ZREMZREM leaderboard playerAO(M log N)移除成员如玩家注销账号支持批量删除ZCARDZCARD leaderboardO(1)统计总参与人数快速获取有序集合大小ZCOUNTZCOUNT exam 90 100O(log N)统计高分学生人数90-100分分数区间内成员数ZREMRANGEBYRANKZREMRANGEBYRANK leaderboard 0 9O(log N M)删除排名最后10名清理末尾按排名范围删除ZINTERSTOREZINTERSTORE common 2 zset1 zset2O(N*K)...计算两个排行榜的交集如共同喜欢的歌单可带权重聚合七、应用场景总结快速索引场景推荐数据类型核心命令缓存对象用户、商品StringJSON 或 HashSET/GET或HSET/HGETALL计数器点赞、阅读StringINCR/DECR分布式锁StringSET key value NX EX seconds排行榜ZsetZADD,ZREVRANGE消息队列简单ListLPUSHBRPOP去重/标签SetSADD,SISMEMBER共同好友/交集SetSINTER验证码/限时TokenStringSETEX任务调度延时队列Zset以时间戳为分数ZADD,ZRANGEBYSCORE最新N条评论ListLPUSHLTRIM八、致命陷阱与规避方法危险操作后果正确替代KEYS *扫描全库阻塞 Redis 数秒至数分钟SCAN cursor [MATCH pattern]HGETALL大 hash返回百万字段阻塞 网络拥塞HSCAN渐进迭代或只取需要的字段SMEMBERS大 set同上SSCANLRANGE 0 -1大 list阻塞 内存溢出LRANGE分页或用LLEN先判断DEL大 key同步删除阻塞主线程UNLINK异步释放内存频繁ZRANGE全量大数据量返回带宽压力加LIMIT分页或使用流式处理