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

Redis里头怎么简单搞定增删改查,步骤不复杂也能快速上手

想在Redis里玩转增删改查,其实特别简单,你就把Redis想象成一个超级快、但结构有点特别的大本子,它不像MySQL那种规规矩矩的表格,而是用“键值对”来存东西,这个“键”就是你给数据起的一个唯一的名字,user:1001”;“值”就是这个名字对应的实际数据,可以是一个字符串、一个列表、一个集合等等。

我们今天就从最基础、最常用的“字符串”类型开始,因为它最直观,学会了它,其他类型也就触类旁通了,操作Redis,最直接的方式就是用它的命令行客户端,你打开终端,输入redis-cli,就进入了Redis的世界。

第一步:增(Create)—— 把数据存进去

存数据主要用SET命令,格式超级简单:SET 键的名字 键的值

你想存一个用户的名字,用户ID是1001,名字叫“张三”,你就可以这么写:

SET user:1001:name "张三"

敲下回车,Redis会回复一个OK,意思是“搞定,存好了”,这里的键名user:1001:name是我随便起的,你可以根据自己的需要来命名,只要保证唯一性就行,常见的命名习惯是用冒号分隔,看起来有层次感。

你还可以一次性设置多个键值对,用MSET命令,能省点事:

MSET user:1001:age 25 user:1001:city "北京"

这一行命令,就把用户的年龄和城市都存进去了。

Redis里头怎么简单搞定增删改查,步骤不复杂也能快速上手

第二步:查(Read)—— 把数据取出来

取数据用GET命令,格式是:GET 键的名字

我们想看看用户1001的名字是什么,就输入:

GET user:1001:name

Redis会直接把“张三”这个值给你显示出来。

如果想一次查多个,比如同时查名字和年龄,可以用MGET

MGET user:1001:name user:1001:age

Redis会返回一个列表,里面按顺序放着“张三”和“25”。

Redis里头怎么简单搞定增删改查,步骤不复杂也能快速上手

你可能不确定某个键存不存在,或者想看看数据库里都有哪些键,可以用KEYS命令配合通配符来查找,比如KEYS user:1001:*,它会列出所有以user:1001:开头的键,但要注意,在生产环境(就是正式使用的服务器)上慎用KEYS *,因为如果键特别多,这个操作可能会让Redis卡一下。

第三步:改(Update)—— 更新已有的数据

改数据,其实和增数据用的命令差不多,还是SET,因为Redis的键是唯一的,如果你对一个已经存在的键再次使用SET命令,新值就会覆盖掉旧值。

用户1001搬家了,从北京搬到了上海,我们就直接:

SET user:1001:city "上海"

再查一下GET user:1001:city,就会发现已经变成“上海”了。

还有一些特殊的修改操作,如果值是个数字,你想给它增加一定的数,可以用INCRBY(增加指定整数)或INCRBYFLOAT(增加指定浮点数),比如给年龄加1岁:

Redis里头怎么简单搞定增删改查,步骤不复杂也能快速上手

INCRBY user:1001:age 1

执行后,年龄就从25变成26了,还有一个更简单的INCR命令,是专门用来每次加1的,特别适合做文章阅读量、点赞数这种计数器。

第四步:删(Delete)—— 把数据清掉

删数据用DEL命令,格式是:DEL 键的名字

我们想删除用户1001的城市信息,就输入:

DEL user:1001:city

Redis会返回一个数字,比如(integer) 1,这表示它成功删除了1个键,如果你删一个不存在的键,它会返回(integer) 0

如果你想给数据设置一个“保质期”,让它在一定时间后自动删除,可以用EXPIRE命令,设置user:1001:name在10秒后过期:

EXPIRE user:1001:name 10

10秒过后,这个键就会自动消失,这在做验证码缓存、临时会话等场景非常有用,你也可以在存数据的时候直接设置过期时间,用SETEX命令,比如SETEX mykey 10 "hello",意思是存一个10秒后过期的键mykey,值是“hello”。

总结一下核心命令(来源:Redis官方命令文档)

  • 增(SET)SET key valueSET username "李四"
  • 查(GET)GET keyGET username
  • 改(SET):再次使用SET key new_value覆盖旧值,或者使用数字操作如INCR key
  • 删(DEL)DEL keyDEL username
  • 设置过期(EXPIRE)EXPIRE key secondsEXPIRE temp_data 60

你看,就这五个核心命令,你已经能在Redis里对最简单的字符串数据进行完整的增删改查了,Redis的强大之处在于它还有其他丰富的数据类型,比如List(列表)、Hash(哈希,类似Java里的Map)、Set(集合)等,每种类型都有一套类似这样简单的命令,比如用HSETHGET操作哈希,用LPUSHLRANGE操作列表,但只要你理解了“键值对”这个基本概念和SET/GET这个最基本的套路,再去学其他的就会觉得非常轻松,关键就是多动手在redis-cli里敲一敲,试一下,感受一下即时响应的快感,很快就上手了。