Redis数据类型与常用命令

📅 2026/7/23 5:29:14
Redis数据类型与常用命令
Redis 数据类型与常用命令速查向接上一篇《Redis 入门指南》之后的实战篇。本文只讲最常用的五种基本数据类型和它们的常用命令配上示例方便日后直接查。一、先记住三个通用命令不管什么数据类型这几个命令都能用127.0.0.1:6379keys *# 查看当前库所有 key生产环境慎用key 多会卡127.0.0.1:6379exists name# 判断 key 是否存在存在返回 1不存在返回 0127.0.0.1:6379typename# 查看 key 的类型127.0.0.1:6379del name# 删除 key返回删除的个数127.0.0.1:6379expire name60# 给 key 设置 60 秒过期时间127.0.0.1:6379ttl name# 查看剩余过期时间秒-1 表示永不过期-2 表示已过期/不存在127.0.0.1:6379persist name# 取消过期时间变成永不过期127.0.0.1:6379renamename name2# 给 key 改名127.0.0.1:6379dbsize# 当前库 key 的数量小贴士ttl是个很好用的命令经常用来排查为什么数据没了——多半是设了过期时间。二、String字符串—— 最常用适用场景缓存、计数器、分布式锁、存 JSON 字符串注意Redis 的 String 是二进制安全的可以存文本、数字甚至图片二进制。单个 value 最大 512MB。常用命令# 基础存取 127.0.0.1:6379setname张三# 存值OK127.0.0.1:6379get name# 取值张三127.0.0.1:6379append name你好# 追加字符串返回新长度(integer)8127.0.0.1:6379strlen name# 字符串长度(integer)8# 数字操作计数器神器127.0.0.1:6379setcount1OK127.0.0.1:6379incr count# 自增 1返回 2(integer)2127.0.0.1:6379incrby count10# 增加指定值返回 12(integer)12127.0.0.1:6379decr count# 自减 1(integer)11127.0.0.1:6379decrby count5# 减少指定值(integer)6# 批量操作 127.0.0.1:6379mset k1 v1 k2 v2 k3 v3# 一次存多个OK127.0.0.1:6379mget k1 k2 k3# 一次取多个1)v12)v23)v3# 设置过期一起写更方便127.0.0.1:6379settokenabcex3600# 存值同时设置 3600 秒过期OK127.0.0.1:6379setnx lock1# 不存在才设置分布式锁核心返回 1 成功 / 0 失败(integer)1实战例子# 文章阅读量计数incr article:1001:views# 分布式锁伪代码思路setnx lock:order1ex30# 抢到锁的人才能往下走30 秒自动释放三、Hash哈希—— 存对象适用场景存用户信息、商品信息这类一个对象有多个字段的数据。比把整个对象转 JSON 存 String 更灵活可以单独改某个字段。常用命令# 存 / 取 127.0.0.1:6379hset user:1 name张三age20# 存一个 hash多个字段用 字段 值 字段 值(integer)2127.0.0.1:6379hget user:1 name# 取单个字段张三127.0.0.1:6379hgetall user:1# 取所有字段和值1)name2)张三3)age4)20127.0.0.1:6379hmget user:1 name age# 取多个字段1)张三2)20# 字段操作 127.0.0.1:6379hincrby user:1 age1# 字段值自增年龄1(integer)21127.0.0.1:6379hexists user:1 name# 字段是否存在(integer)1127.0.0.1:6379hdel user:1 age# 删除字段(integer)1127.0.0.1:6379hlen user:1# 字段数量(integer)1127.0.0.1:6379hkeys user:1# 所有字段名1)name127.0.0.1:6379hvals user:1# 所有字段值1)张三实战例子# 购物车用 hashfield 是商品 idvalue 是数量hincrby cart:user1 product:1001# 商品 100 数量 1hgetall cart:user1# 查看购物车全部四、List列表—— 有序可重复适用场景消息队列、最新消息列表、朋友圈时间线。底层是双向链表两端操作极快中间操作稍慢。常用命令# 两端插入 127.0.0.1:6379lpush mylist a b c# 从左边头部插入返回长度(integer)3127.0.0.1:6379rpush mylist d e# 从右边尾部插入(integer)5127.0.0.1:6379lrange mylist0-1# 从左到右取全部0 起点-1 表示最后一个1)c2)b3)a4)d5)e# 两端弹出队列 / 栈127.0.0.1:6379lpop mylist# 从左边弹出一个消费队列常用c127.0.0.1:6379rpop mylist# 从右边弹出一个e127.0.0.1:6379llen mylist# 列表长度(integer)3# 阻塞弹出消息队列核心127.0.0.1:6379blpop task_queue0# 左边弹出没有就阻塞等待0 表示一直等1)task_queue2)job1实战例子# 最新文章列表只保留最近 10 条lpush news:latest文章Altrim news:latest09# 只保留索引 0~9也就是最近 10 条# 简单消息队列rpush queue:taskstask1# 生产右边入队blpop queue:tasks0# 消费左边阻塞出队五、Set集合—— 无序不可重复适用场景标签、共同好友、点赞用户、去重。支持交集、并集、差集运算。常用命令# 增删查 127.0.0.1:6379sadd tags:user1javapython redis# 添加成员(integer)3127.0.0.1:6379smembers tags:user1# 查看所有成员1)java2)python3)redis127.0.0.1:6379sismember tags:user1java# 是否包含1 是 0 否(integer)1127.0.0.1:6379srem tags:user1java# 删除成员(integer)1127.0.0.1:6379scard tags:user1# 成员数量(integer)2# 集合运算重点127.0.0.1:6379sadd tags:user2 python go redis(integer)3127.0.0.1:6379sinter tags:user1 tags:user2# 交集共同标签1)python2)redis127.0.0.1:6379sunion tags:user1 tags:user2# 并集1)python2)redis3)go127.0.0.1:6379sdifftags:user1 tags:user2# 差集user1 有 user2 没有1)java# 假设 user1 还有 java实战例子# 共同好友sinter friends:userA friends:userB# 抽奖随机抽取一个中奖者srandmember lottery# 随机抽一个不删除spop lottery# 随机抽一个并删除抽完不放回六、ZSet有序集合—— 带分数的 Set适用场景排行榜、延迟队列、带权重的任务。每个成员关联一个score分数按分数从小到大排序。常用命令# 增删查 127.0.0.1:6379zadd rank100张三90李四95王五# 添加成员和分数(integer)3127.0.0.1:6379zscore rank张三# 查看某成员分数100127.0.0.1:6379zcard rank# 成员数量(integer)3# 排名查询重点127.0.0.1:6379zrange rank0-1withscores# 按分数从小到大取全部带分数1)李四2)903)王五4)955)张三6)100127.0.0.1:6379zrevrange rank0-1withscores# 按分数从大到小取全部排行榜用这个127.0.0.1:6379zrank rank张三# 某成员排名从 0 开始从小到大(integer)2127.0.0.1:6379zrevrank rank张三# 某成员排名从大到小即排行榜名次(integer)0# 分数范围查询 127.0.0.1:6379zrangebyscore rank90100# 取分数在 90~100 之间127.0.0.1:6379zcount rank90100# 统计分数在 90~100 的个数# 分数增减 127.0.0.1:6379zincrby rank10张三# 张三分数 10刷分神器110127.0.0.1:6379zrem rank李四# 删除成员(integer)1实战例子# 游戏积分排行榜前 10 名zrevrange game:rank09withscores# 文章点赞排行zincrby article:likes1article:1001zrevrange article:likes09withscores七、五种类型对比速查表类型特点典型命令常见场景String一个 key 一个值set / get / incr缓存、计数器、锁Hashkey 下有多个字段hset / hget / hgetall对象信息用户、商品List有序、可重复lpush / rpush / lrange队列、最新列表Set无序、不可重复sadd / sinter / sdiff标签、共同好友ZSet有序、带分数zadd / zrange / zincrby排行榜八、小结日常够用的命令清单# 通用 keys * / exists /type/ del / expire / ttl# String set/ get / incr / decr / mset / mget / setnx# Hash hset / hget / hgetall / hincrby / hdel / hlen# List lpush / rpush / lrange / lpop / rpop / blpop# Set sadd / smembers / sismember / sinter / sunion /sdiff# ZSet zadd / zscore / zrange / zrevrange / zincrby / zrevrank记住这张表日常工作 80% 的场景都够用了。觉得有用记得点赞收藏方便以后查阅~