Redis数据类型之Redis字符串(String) SETEX key seconds value SETNX key value
单值单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 "x00x00x00x00x00x00Redis" redis>
时间复杂度: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