
1. 引言Redis 是一个基于内存的高性能键值存储系统凭借其丰富的数据结构、极低的读写延迟和简单易用的命令体系成为后端开发中缓存、会话管理、消息队列、排行榜等场景的首选组件。本文面向 Redis 初学者从核心数据结构入手结合可复制的命令示例带你快速掌握 Redis 的日常使用。2. Redis 核心数据结构总览Redis 提供了多种数据结构每种结构都有其擅长的应用场景。下表是常见数据结构的速览数据结构底层实现典型应用场景String字符串动态字符串缓存、计数器、分布式锁Hash哈希哈希表对象存储、用户信息List列表双向链表消息队列、时间线Set集合哈希表/整数集合去重、共同好友ZSet有序集合跳表 哈希表排行榜、延时队列3. String 字符串String 是 Redis 最基础的数据结构value 最大可存储 512MB支持整数、浮点数的原子自增自减。3.1 常用命令# 设置与获取SET user:namezhangsanGET user:name# 设置过期时间秒SET session:tokenabc123EX3600# 不存在才设置分布式锁常用SET lock:order1NX EX10# 原子自增自减INCR page:view INCRBY page:view10DECR page:view# 批量操作MSET k1v1k2v2MGET k1 k23.2 实战商品库存扣减# 初始化库存SET product:1001:stock100# 扣减库存原子操作避免超卖DECR product:1001:stock# 查询剩余库存GET product:1001:stock4. Hash 哈希Hash 适合存储对象类型的数据可以单独对某个字段进行读写节省内存且操作灵活。4.1 常用命令# 设置单个字段HSET user:1001 namezhangsanage25# 获取单个/多个字段HGET user:1001 name HMGET user:1001 name age# 获取所有字段HGETALL user:1001# 字段自增HINCRBY user:1001 age1# 删除字段HDEL user:1001 age# 判断字段是否存在HEXISTS user:1001 name4.2 实战用户信息缓存# 用户登录后写入缓存HSET user:1001 usernamezhangsanemailzsexample.comlogin_count0# 每次登录自增计数HINCRBY user:1001 login_count1# 读取用户信息HGETALL user:10015. List 列表List 是双向链表结构支持从两端推入和弹出元素适合实现消息队列、最新消息列表等场景。5.1 常用命令# 从右侧推入队列尾部RPUSH queue:tasktask1task2# 从左侧弹出队列头部消费LPOP queue:task# 从左侧推入栈顶LPUSH stack:dataab# 获取指定范围元素LRANGE queue:task0-1# 获取列表长度LLEN queue:task# 阻塞式弹出超时 10 秒BRPOP queue:task105.2 实战简单消息队列# 生产者推送任务RPUSH task:queuesend_email:1001send_sms:1002# 消费者阻塞获取任务BRPOP task:queue06. Set 集合Set 是无序、去重的字符串集合支持集合间的交、并、差运算适合做标签系统、共同好友等场景。6.1 常用命令# 添加元素SADD user:1001:tagsjavaredismysql# 移除元素SREM user:1001:tagsmysql# 查看所有元素SMEMBERS user:1001:tags# 判断元素是否存在SISMEMBER user:1001:tagsredis# 集合运算SADD user:1002:tagsjavapythonSINTER user:1001:tags user:1002:tags# 交集SUNION user:1001:tags user:1002:tags# 并集SDIFF user:1001:tags user:1002:tags# 差集6.2 实战抽奖去重# 用户参与抽奖SADD lottery:2026user1user2user3# 随机抽取中奖者不重复SPOP lottery:20267. ZSet 有序集合ZSet 在 Set 的基础上为每个元素关联一个 score分数按分数排序是排行榜功能的利器。7.1 常用命令# 添加元素及分数ZADD leaderboard100player_a85player_b# 查看排名从低到高ZRANGE leaderboard0-1WITHSCORES# 查看排名从高到低ZREVRANGE leaderboard0-1WITHSCORES# 获取分数ZSCORE leaderboardplayer_a# 增加分数ZINCRBY leaderboard10player_a# 获取排名从 0 开始ZRANK leaderboardplayer_a7.2 实战游戏排行榜# 玩家得分ZADD game:rank1500player_12300player_21800player_3# 玩家获胜加 100 分ZINCRBY game:rank100player_3# 获取前三名ZREVRANGE game:rank02WITHSCORES8. 综合实战热点新闻缓存下面通过一个完整的场景串联多种数据结构实现热点新闻的缓存与排行榜。# 1. 新闻详情用 Hash 存储HSET news:1001 titleRedis 入门教程author张三views0# 2. 每次访问自增浏览量HINCRBY news:1001 views1# 3. 用 ZSet 维护热点榜score 为浏览量ZADD hot:news0news:1001# 4. 浏览量变化时同步更新榜单ZINCRBY hot:news1news:1001# 5. 获取 Top 10 热点新闻ZREVRANGE hot:news09WITHSCORES9. 总结本文介绍了 Redis 五种核心数据结构及其常用命令并通过库存扣减、消息队列、排行榜等实战场景展示了它们的典型用法。掌握这些基础后建议进一步学习 Redis 的持久化机制RDB/AOF、过期策略、集群与哨兵架构逐步构建生产级 Redis 应用能力。