数据库 二月 23, 2020

Redis 字符串(String)命令

Words count 2.5k Reading time 2 mins. Read count 1000000

Redis 字符串(String)命令

基本命令

Redis中基本的字符串命令包括 setgetstrlen。其用法很简单。其中 get 的用法为 get key,set的基本用法为 set key value,而strlen的用法为strlen key,返回key的字符串长度。而在现实中,我们经常的需求往往并不是这么简单。那么在这个时候,我们就需要一些升级后的命令了。

升级后的命令

我们在实际的需求中,可能会遇到这样的需求,我们需要先取得某个 key 的值,然后将这个 key 赋值成为 我们期望的某个值。在这样的情况下,我们往往用基本命令也能完成这样的需求:

get key
set key value

为了操作简便,Redis为我们提供了升级后的命令:getset.顾名思义,这个值会设置某个键为新值,并返回原值。用法和set相似:getset key value;除了getset之外,Redis还为我们设置了像incr,desc,incrby,descby,incrbyfloat对值是numberkey的值进行自增或自减的升级命令(注:返回值为自增或自减后的值)。

msetmget则可以同时设置多个key的值,或者同时获取多个key的值。

setexpsetex是对set的升级,它的功能除了可以给key设定值之外,还会为key设定过期时间。其中的区别是:

  • setex的过期时间以为单位
  • psetex的过期时间以毫秒为单位

setnx也是对set的升级,它只在key存在的时候才会更新值。并且返回值直接和成功与否有关:

  • 成功->1
  • 失败->0

append则是当key存在的时候并且值为字符串时,将value直接追加到字符串末尾,而当key不存在时,则和set是一样的效果。

msetnx是对mset或者说是setnx的升级。它只有在所有key都存在的情况下,才对所有的key进行更新操作。返回值如下:

  • 成功->1
  • 失败->0

getrangesetrange是对getset针对子字符串的升级操作,分别是获取字串和设置子串,用法为getrange key start endset key offset value;

在使用getrangesetrange的时候,其中的start endoffset需要注意。其中,当start大于字符串最后一个字符的索引时,直接返回空字符串。当值为负数的时候,即为从字符串的最后一个字母开始向前数。当offset大于最后一个字符的索引的时候,在最后一个索引和offset之间会填充空格,表现形式为\x00.

高级命令

说是高级命令,其实是对字符串的非直接操作,而是对其对应的ASCII吗的操作。getbit是获取某个key的指定偏移量(bit)上的值,而setbit key offset value 则指定key上的offsetd 的值。

0%