Redis里用put方法存数据到底咋操作,感觉有点迷糊想理清楚
- 问答
- 2026-01-16 22:19:48
- 3
你想用什么数据结构,存什么样的数据?
下面我就根据 Redis 主要的数据结构,来给你一一说明对应的“put”操作是怎么做的。
最常用的情况:存简单的键值对(就像Java里的Map)
这是最常见、最直接的用法,你想把一个值(比如一个字符串、一个数字)关联到一个键上,在Redis里,这个操作对应的命令主要是 SET。
-
基本操作:
SET key value- 这行命令的意思就是:把
value这个值,放到key这个键下面存起来。 - 举例:你想把用户名 “张三” 存到键 “user:1001:name” 下面。
- 命令就是:
SET user:1001:name "张三"
- 命令就是:
- 这就完成了最基础的“存数据”,也就是你理解的“put”。
- 这行命令的意思就是:把
-
一些有用的“增强型put”选项: Redis的
SET命令非常强大,它允许你附带一些条件,让这个“存”的操作更智能。SETNX(SET if Not eXists):只有当这个键不存在的时候,才执行存入操作,如果键已经存在,就不存了,这常用于实现分布式锁,防止重复提交。- 举例:
SETNX lock:order123 "1"—— 只有之前没有lock:order123这个锁的时候,我才能成功设置它。
- 举例:
SETEX(SET with EXpire):在存数据的同时,给这个数据设置一个过期时间(单位是秒),时间一到,Redis会自动删除这个键值对,这非常适合存验证码、临时会话等。- 举例:
SETEX sms:13800138000 300 "888999"—— 把验证码 “888999” 存起来,并且300秒(5分钟)后自动失效。
- 举例:
PSETEX:和SETEX一样,只是过期时间的单位是毫秒。
当你只是想简单地存一个键值对时,你脑子里想的“put”命令,大概率就是 SET 以及它的变种 SETNX 和 SETEX。

存多个键值对(批量操作)
如果你想一次性存入多个键值对,而不是一个个地 SET,Redis也提供了批量操作命令 MSET (Multiple SET)。
- 操作:
MSET key1 value1 key2 value2 ...- 举例:你要初始化一个用户的基本信息。
- 命令:
MSET user:1001:name "张三" user:1001:age "30" user:1001:city "北京"
- 命令:
- 这个操作是原子性的,意味着要么所有的键值对都设置成功,要么一个都不设置,这能保证数据的一致性。
- 举例:你要初始化一个用户的基本信息。
当值不是字符串时:其他数据结构的“put”
Redis的强大之处在于它的值不仅仅是字符串,还可以是列表、哈希、集合等复杂结构,这时,“put”的操作就完全不同了。
-
哈希(Hash) - 适合存对象 如果一个用户有多个字段(姓名、年龄、城市),用多个独立的
SET命令会创建很多键,管理起来麻烦,用哈希结构,可以把这些字段都存到一个键下面。
- “Put”一个字段:
HSET key field value- 举例:
HSET user:1001 name "张三" age 30 city "北京" - 这个命令的意思是在名为
user:1001的哈希结构中,设置name字段为 “张三”,age字段为 30,等等,你可以把它想象成往一个Java的Map里面put多个键值对,但整个Map在Redis里只占一个键。
- 举例:
- 对应的也有
HMSET(批量设置多个字段,但新版本中HSET已经可以替代它了)和HSETNX(字段不存在时才设置)。
- “Put”一个字段:
-
列表(List) - 类似一个链表 列表的特点是元素有序,且可以重复,常用的“put”操作是从左边或右边插入元素,更像是“push”而不是“put”。
- 从左边插入(头部):
LPUSH key value1 value2 ... - 从右边插入(尾部):
RPUSH key value1 value2 ... - 举例:用一个列表记录用户的最近浏览记录。
LPUSH recent:1001 product:333 product:222 product:111,这样,最新的商品ID总是在列表最前面。
- 从左边插入(头部):
-
集合(Set) - 无序且元素唯一 集合保证里面的元素不重复,常用于存标签、好友列表等。
- “Put”操作:
SADD key member1 member2 ...- 举例:给一篇文章添加标签。
SADD article:123:tags "科技" "编程" "Redis",即使你重复添加 “科技”,集合里也只会有一个。
- 举例:给一篇文章添加标签。
- “Put”操作:
-
有序集合(Sorted Set / ZSet) 这是最复杂但也非常强大的结构,它像Set一样保证成员唯一,但每个成员都有一个分数(score)用于排序,适合排行榜、带权重的队列等。
- “Put”操作:
ZADD key score1 member1 score2 member2 ...- 举例:记录玩家分数排行榜。
ZADD leaderboard 2500 "玩家A" 1800 "玩家B" 3000 "玩家A",注意,玩家A”已存在,这个操作会更新他的分数为3000。
- 举例:记录玩家分数排行榜。
- “Put”操作:
让你不再迷糊:
你问的“put方法”,在Redis里并没有一个叫 PUT 的命令,你需要根据你的业务场景,选择合适的数据结构和对应的命令:
- 存简单字符串或数字?用
SET。 - 想批量存简单键值对?用
MSET。 - 存一个对象(有多个字段)?用哈希(Hash)和
HSET。 - 存一个有序且可重复的序列(如消息队列、时间线)?用列表(List)和
LPUSH/RPUSH。 - 存一个唯一、无序的集合(如标签)?用集合(Set)和
SADD。 - 存一个带排序的排行榜?用有序集合(Sorted Set)和
ZADD。
下次当你想要“put”数据到Redis时,先停下来问自己一句:“我到底要存的是什么类型的数据?我希望它有什么特性?” 想清楚了这个问题,就能准确地找到对应的命令,操作起来就不会迷糊了。
本文由畅苗于2026-01-16发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/82038.html
