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

Redis写数据怎么操作啊,命令啥的到底怎么用才能写进去

你想知道怎么往Redis里写数据,说白了就是怎么把东西存进去,这个“东西”在Redis里主要是各种各样的“键值对”,你可以把Redis想象成一个超级快的大柜子,每个抽屉都有一个独一无二的标签(这就是“键”,key),抽屉里放的东西就是“值”(value),写数据的操作,主要就是打开柜子,把东西放进对应标签的抽屉里,下面我就用最直白的话告诉你几个最常用的“放东西”命令。

最基础的存数据:SET命令

这个命令是最常用、最简单的,就是给一个键设置一个值,它的基本样子长这样:SET key value,你想把用户名“张三”存起来,可以用一个叫 username 的键来存,那么命令就是:SET username 张三,敲回车,Redis会回复一个“OK”,这就表示存成功了。

这个SET命令还有很多灵活的用法,可以给存进去的数据加一些“条件”或者“保质期”。

Redis写数据怎么操作啊,命令啥的到底怎么用才能写进去

  • 设置过期时间:比如你存了一个用户登录的验证码,希望它5分钟后自动消失,免得占地方,你可以用 SET code 123456 EX 300,这里的 EX 后面跟的数字就是秒数,300秒就是5分钟,除了 EX(以秒计),还可以用 PX(以毫秒计)。
  • 只有键不存在时才设置:有时候你怕覆盖掉已经存在的数据,就可以用 SET username 李四 NX,这个 NX 的意思是,只有当 username 这个键存在的时候,才把“李四”存进去,如果这个键已经存在了,命令就不执行,返回一个 (nil) 表示没存成,反过来,还有个 XX,意思是只有键已经存在的时候才设置新值。

存数字并能做加减:INCR和DECR命令

Redis很聪明,如果你存的是一个数字,它可以直接让你对这个数字进行加减操作,特别适合做计数器,比如统计网站访问量、点赞数等等。

  • 增加1INCR key,比如你有一个键叫 page_view(页面浏览量),每次有人访问页面,你就执行一下 INCR page_view,神奇的是,你甚至不需要提前创建这个 page_view 键,Redis第一次遇到这个命令时,会把它当成0,然后加1,结果就是1。
  • 增加指定的数INCRBY key increment,比如你想一次增加10个访问量,就用 INCRBY page_view 10
  • 减少1DECR key,用法和 INCR 一样。
  • 减少指定的数DECRBY key decrement,用法和 INCRBY 一样。

这些命令是原子性的,这是个专业术语,但意思很简单,就是保证多个客户端同时加减同一个数字时,不会出错,结果一定是正确的。

Redis写数据怎么操作啊,命令啥的到底怎么用才能写进去

往列表里追加数据:LPUSH和RPUSH命令

Redis里的值不只是字符串,还可以是列表(List),列表就像排队一样,数据一个接一个,写数据到列表,主要是从左边塞进去或者从右边塞进去。

  • 从左边插入LPUSH key value [value ...],比如你有一个待办事项列表 todo_list,你可以用 LPUSH todo_list "买菜" "写报告",注意,这个命令会先把“买菜”放进列表的最左边,然后再把“写报告”放到“买菜”的左边,所以最后列表里的顺序是 ["写报告", "买菜"],你可以一次塞多个值。
  • 从右边插入RPUSH key value [value ...],还是上面的例子,RPUSH todo_list "买菜" "写报告",买菜”会先放在右边,写报告”放在“买菜”的右边,最后顺序是 ["买菜", "写报告"],这更符合我们通常的习惯。

往集合里添加元素:SADD命令

Redis写数据怎么操作啊,命令啥的到底怎么用才能写进去

集合(Set)的特点是里面的元素是唯一的,不允许重复,而且没有顺序,这很适合存标签、兴趣爱好这类数据。

  • 添加元素SADD key member [member ...],比如给一篇文章加标签,SADD article:1001:tags "科技" "编程" "Redis",即使你重复执行 SADD article:1001:tags "科技",集合里也只会有一个“科技”标签。

往哈希里设置字段值:HSET命令

哈希(Hash)适合存一个对象的多个属性,比如一个用户的信息,有姓名、年龄、城市等,你可以用一个键(user:1000)代表这个用户,然后用哈希来存他的各个属性。

  • 设置字段值HSET key field valueHSET user:1000 name "王五"HSET user:1000 age 30HSET user:1000 city "北京"
  • 一次设置多个字段值HMSET key field value [field value ...],这样更高效,HMSET user:1000 name "王五" age 30 city "北京",现在新版本里,HSET 命令也支持一次设置多个了,但 HMSET 仍然常用。

总结一下怎么用命令:

你得先连接到Redis服务器,通常在命令行里输入 redis-cli 就能进入一个交互界面,然后就可以直接输入上面这些命令了,每输入一条命令,Redis都会给你一个回复,OK”表示成功,“(nil)”表示没有结果或操作未执行,你输入命令的时候,键和值之间、选项之间都要用空格隔开,如果值里面有空格,最好用双引号引起来,SET greeting "Hello World"

基本上,掌握了这几种命令,你就能应付大部分往Redis里写数据的场景了,核心就是先想好你的数据用什么结构存(简单的字符串、列表、集合还是哈希),然后选择合适的命令塞进去就行了。