IT序号网

Redis数据类型之Redis字符串(String)

shasha 2021年06月13日 数据库 304 0

单值单value

常用

 set/get/del/append/strlen

Incr/decr/incrby/decrby,一定要是数字才能进行加减

getrange

O(N) N是字符串长度,复杂度由最终返回长度决定,但由于通过一个字符串创建子字符串是很容易的,它可以被认为是O(1)。

例子

redis> SET mykey "This is a string" 
OK 
redis> GETRANGE mykey 0 3 
"This" 
redis> GETRANGE mykey -3 -1 
"ing" 
redis> GETRANGE mykey 0 -1 
"This is a string" 
redis> GETRANGE mykey 10 100 
"string" 
redis> 

setrange

覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度。

如果offset比当前key对应string还要长,那这个string后面就补0以达到offset。不存在的keys被认为是空字符串,所以这个命令可以确保key有一个足够大的字符串,能在offset处设置value。

返回值

该命令修改后的字符串长度

例子

基本使用方法:

redis> SET key1 "Hello World" 
OK 
redis> SETRANGE key1 6 "Redis" 
(integer) 11 
redis> GET key1 
"Hello Redis" 
redis> 

补0的例子:

redis> SETRANGE key2 6 "Redis" 
(integer) 11 
redis> GET key2 
"\x00\x00\x00\x00\x00\x00Redis" 
redis> 

SETEX key seconds value

时间复杂度:O(1)

设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期。这个命令等效于执行下面的命令:

例子

redis> SETEX mykey 10 "Hello" 
OK 
redis> TTL mykey 
(integer) 10 
redis> GET mykey 
"Hello" 
redis> 

SETNX key value

时间复杂度:O(1)

key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。

返回值

  • 1 如果key被设置了
  • 0 如果key没有被设置

例子

redis> SETNX mykey "Hello" 
(integer) 1 
redis> SETNX mykey "World" 
(integer) 0 
redis> GET mykey 
"Hello" 
redis> 

 mset/mget/msetnx

mset:同时设置一个或多个 key-value 对。

mget:获取所有(一个或多个)给定 key 的值。

msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

 getset(先get再set)

getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
简单一句话,先get然后立即set


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!