当前位置:首页 > 问答 > 正文

红色魔力带你快速入门那些简单又实用的Redis命令,轻松玩转缓存数据库

(来源:Redis官方文档)Redis是一个开源的、基于内存的键值对存储数据库,它最常被用作缓存,但也能干很多别的事情,速度非常快,咱们今天不聊那些复杂难懂的,就说说那些你一学就能用上,能立刻让程序变得“嗖嗖快”的命令。

最核心的“增删改查”:SET, GET, DEL

这哥仨是Redis里最基础、最常用的命令,就像学写字要先认识“一、二、三”一样。

  • SET:存东西(来源:Redis命令参考) 想象你有一个大柜子,SET 命令就是让你把一件东西贴上个标签然后放进柜子里,命令格式很简单:SET 键 值。 你想把用户名叫“张三”缓存起来,就可以这样写: SET username "张三" 这就相当于把“张三”这个值,贴上了“username”这个标签,存进了Redis这个“大柜子”,你还可以给它加个“保质期”,比如让这个信息10秒后自动消失:SET username "张三" EX 10

  • GET:取东西(来源:Redis命令参考) 存进去的东西,总要拿出来用。GET 命令就是根据标签(键)把东西(值)取出来,命令是:GET 键。 接着上面的例子,你想看看“username”这个标签下存的是谁,就输入: GET username Redis就会返回 "张三",如果你查一个不存在的键,GET age,Redis会返回 nil,意思是“啥也没有”。

  • DEL:扔东西(来源:Redis命令参考) 有些数据过期没用了,或者你想清掉它,就用 DEL 命令把它从“柜子”里扔出去,命令是:DEL 键。 比如要删除刚才存的用户名:DEL username,删除成功后,Redis会告诉你删除了几个键(这里是1)。

    红色魔力带你快速入门那些简单又实用的Redis命令,轻松玩转缓存数据库

管理数据“保质期”:EXPIRE, TTL

缓存数据一般都不是永久有效的,比如短信验证码5分钟内有效,新闻热点数据缓存1小时,这就需要管理数据的生命周期。

  • EXPIRE:设置过期时间(来源:Redis命令参考) 这个命令可以给一个已经存在的键设置多少秒后过期,命令是:EXPIRE 键 秒数。 假设你存了一个验证码:SET auth_code "123456" 然后你想让它在300秒(5分钟)后自动失效,就执行:EXPIRE auth_code 300

  • TTL:查看还剩多少秒过期(来源:Redis命令参考) 你可能会好奇,我设置的那个键到底还能活多久?TTL 命令就是干这个的,命令是:TTL 键。 查一下验证码的剩余时间:TTL auth_code。 Redis会返回一个数字,287,表示还剩287秒,如果返回 -2,说明这个键已经不存在了;返回 -1,说明这个键没有设置过期时间,是“永久的”。

处理数字的妙招:INCR, DECR

红色魔力带你快速入门那些简单又实用的Redis命令,轻松玩转缓存数据库

很多场景下我们需要计数,比如文章阅读量、用户点赞数、商品库存等,如果用GETSET来操作会很麻烦,你需要先把数字读出来,在程序里加1,再写回去,Redis提供了更简单直接的方法。

  • INCR:让数字加1(来源:Redis命令参考) 这个命令能把键对应的值自动增加1,命令是:INCR 键,它最大的好处是“原子性”,意思是这个操作不会被中途打断,多个客户端同时计数也不会出错。 比如给一篇文章增加阅读量: INCR article:1001:views 第一次执行,键article:1001:views的值会从0变成1;第二次执行,就从1变成2,非常简单。

  • DECR:让数字减1(来源:Redis命令参考) 和INCR相反,它是让数字自动减1,命令是:DECR 键。 比如扣减商品库存:DECR product:500:stock

存放多个值的“购物车”:HSET, HGET

有时候一个键下面我们想存不止一个值,比如一个用户的详细信息(姓名、年龄、城市),如果用多个普通的键(如user:1:name, user:1:age)会很散乱,Redis的Hash(哈希)类型就像个“购物车”或者“小抽屉”,可以把这些相关的信息打包在一起。

红色魔力带你快速入门那些简单又实用的Redis命令,轻松玩转缓存数据库

  • HSET:往哈希里存字段(来源:Redis命令参考) 这个命令用于在哈希表中设置字段的值,命令是:HSET 键 字段名 字段值。 比如存储用户1的信息: HSET user:1 name "李四" HSET user:1 age 28 HSET user:1 city "北京" 你也可以一条命令设置多个字段:HSET user:1 name "李四" age 28 city "北京"

  • HGET:从哈希里取字段(来源:Redis命令参考) 这个命令用于获取哈希表中指定字段的值,命令是:HGET 键 字段名。 比如想获取用户1的城市:HGET user:1 city,Redis会返回 "北京"。 如果想一次性获取这个用户的所有信息,可以使用 HGETALL user:1,它会把这个哈希里的所有字段和值都列出来。

自动去重的“集合”:SADD, SMEMBERS

如果你需要存储一个不重复的列表,比如一篇文章的所有点赞用户ID,防止同一个人重复点赞,或者记录某场活动的参与人员,Set(集合)类型就非常合适。

  • SADD:往集合里加元素(来源:Redis命令参考) 向集合中添加一个或多个成员,命令是:SADD 键 成员1 成员2 ...。 比如记录给文章1001点赞的用户: SADD article:1001:likes user:123 user:456 如果你再次执行 SADD article:1001:likes user:123,Redis会忽略这个重复的user:123,保证集合里每个成员都是唯一的。

  • SMEMBERS:查看集合所有成员(来源:Redis命令参考) 返回集合中的所有成员,命令是:SMEMBERS 键。 查看所有给文章1001点赞的用户:SMEMBERS article:1001:likes

就是一些最简单实用的Redis命令,它们已经能覆盖很多日常的缓存和使用场景了,Redis的魅力在于它的简单和速度,先从这些命令玩起,你就能立刻感受到它带来的效率提升,熟练之后,再去探索列表(List)、有序集合(Sorted Set)等更高级的特性,你的缓存技能包就会越来越丰富。