Redis 字符串处理
Redis 在进行字符串处理时用到的命令
1、SET KEY VALUE
设置键的值,如果设置成功返回OK。
127.0.0.1:6379> SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]
- EX seconds:设置过期时间,单位:秒。
- PX milliseconds:设置过期时间,单位:毫秒。
- NX:该键值不存在时执行赋值操作。
- XX:该键值已存在时执行赋值操作。
例如,
127.0.0.1:6379> SET NAME "randyma" EX 60 NX OK 127.0.0.1:6379> GET NAME "randyma" 127.0.0.1:6379> SET NAME "RANDY" EX 10 XX OK 127.0.0.1:6379> GET NAME "RANDY" 127.0.0.1:6379> GET NAME (nil)
2、GET KEY VALUE
获取键的值,如果键不存在,返回nil,如果返回的不是字符串,则提示错误。
127.0.0.1:6379> GET KEY
3、GETRANGE
获取键值字符串中子字符串的值,按照偏移量决定,从start开始到end结束。
可以使用负偏移,表示从字符串的末尾开始计算偏移量。
127.0.0.1:6379> GETRANGE KEY_NAME start end
例如,
127.0.0.1:6379> SET ADDRESS "NJ XW SJ NO" OK 127.0.0.1:6379> GETRANGE ADDRESS 0 1 "NJ" 127.0.0.1:6379> GETRANGE ADDRESS 0 2 "NJ " 127.0.0.1:6379> GETRANGE ADDRESS 0 3 "NJ X" 127.0.0.1:6379> GETRANGE ADDRESS 0 4 "NJ XW" 127.0.0.1:6379> GETRANGE ADDRESS 0 -1 "NJ XW SJ NO"
4、GETSET
指定该键的新值,并且返回其旧值。如果该键不存在,则返回nil。
127.0.0.1:6379> GETSET KEY VALUE
例如,
127.0.0.1:6379> SET ADDRESS "NJ XW SJ NO" OK 127.0.0.1:6379> GETSET ADDRESS "NJ XW" "NJ XW SJ NO" 127.0.0.1:6379> GET ADDRESS "NJ XW"
5、SETBIT
设置在键处存储的字符串中偏移处的位值。OFFSET:0 ~ 2^32 - 1
127.0.0.1:6379> SETBIT KEY_NAME OFFSET VALUE
例如,
127.0.0.1:6379> SETBIT NUM 4294967295 1 (integer) 1 127.0.0.1:6379> SETBIT NUM 1 1 (integer) 1
6、GETBIT
设置在键处存储的字符串中偏移处的位值。OFFSET:0 ~ 2^32 - 1
如果偏移的位置的值为1,则返回1,该位置的值为0,则返回0。
127.0.0.1:6379> GETBIT KEY_NAME OFFSET
例如,
127.0.0.1:6379> GETBIT NUM 4294967295 (integer) 1 127.0.0.1:6379> GETBIT NUM 3294967295 (integer) 0
7、MGET
用于获取多个指定键的值。对于不存在的键返回nil。
Redis区分大小写,所以取值的时候注意区分。
127.0.0.1:6379> MGET KEY KEY [key ...]
例如,
127.0.0.1:6379> SET NUM1 1 OK 127.0.0.1:6379> SET NUM2 2 OK 127.0.0.1:6379> SET NUM3 3 OK 127.0.0.1:6379> MGET num1 num2 num3 1) (nil) 2) (nil) 3) (nil) 127.0.0.1:6379> MGET NUM1 NUM2 NUM3 1) "1" 2) "2" 3) "3"
8、SETEX
用于设置指定键的字符串值,并且设置其过期时间,单位:秒。
与SET命令不同的是,SETEX是一个原子操作(Atomic),而SET则不是。
SET命令会分解为两个子操作(SET、EXPIRE)。
127.0.0.1:6379> SETEX KEY SECONDS VALUE
例如,
127.0.0.1:6379> SETEX NUM1 60 850725 OK 127.0.0.1:6379> TTL NUM1 (integer) 56 127.0.0.1:6379> GET NUM1 "850725"
9、SETNX
当指定的键值不存在时,设置该键的字符串值。如果不存在,则SETNX等同于SET命令。
返回值为1,表示该键不存在,赋值成功。
返回值为0,表示该键存在,赋值不成功。
127.0.0.1:6379> SETNX KEY VALUE
例如,
127.0.0.1:6379> SETNX NAME "randyma" (integer) 1 127.0.0.1:6379> SETNX NAME "randy" (integer) 0 127.0.0.1:6379> GET NAME "randyma"
10、SETRANGE
用于修改指定键的字符串内容,从OFFSET偏移量开始,使用VALUE值往后替换。
替换的长度为给定的字符串的长度。
127.0.0.1:6379> SETRANGE KEY OFFSET VALUE
例如,
127.0.0.1:6379> SET KEY "Hello World!" OK 127.0.0.1:6379> SETRANGE KEY 6 "redis" (integer) 12 127.0.0.1:6379> GET KEY "Hello redis!" 127.0.0.1:6379> SETRANGE KEY 7 "redis" (integer) 12 127.0.0.1:6379> GET KEY "Hello rredis"
11、STRLEN
用于获取指定键的字符串长度。如果该键不存在,返回0。
127.0.0.1:6379> STRLEN KEY
例如,
127.0.0.1:6379> STRLEN KEY1 (integer) 0 127.0.0.1:6379> STRLEN key1 (integer) 12
127.0.0.1:6379> GET key1
"Hello rredis"
12、MSET
用于批量设置多个键的字符串值。
Redis区分大小写,所以取值的时候注意区分。
127.0.0.1:6379> MSET KEY VALUE [key value ...]
例如,
127.0.0.1:6379> MSET KEY1 "HA" KEY2 "HA" KEY3 "BYE" OK 127.0.0.1:6379> MGET KEY1 KEY2 KEY3 1) "HA" 2) "HA" 3) "BYE"
13、MSETNX
用于同时设置多个键与多个字符串值。如果设置的键不存在,MSETNX等同于MSET命令。
但如果指定的键有一个已经存在,则MSETNX不做任何操作。
返回值为1,表示该键不存在,赋值成功。
返回值为0,表示该键存在,赋值不成功。
127.0.0.1:6379> MSETNX KEY VALUE [key value ...]
例如,
127.0.0.1:6379> MSETNX KEY1 "Hello" KEY2 "World!" (integer) 1 127.0.0.1:6379> MSETNX KEY2 "worlds" KEY3 "Redis" (integer) 0 127.0.0.1:6379> MGET KEY1 KEY2 KEY3 1) "Hello" 2) "World!" 3) (nil)
14、PSETEX
用于设置指定键的字符串值,并且设置其过期时间,单位:毫秒。
与SET命令不同的是,PSETEX是一个原子操作(Atomic),而SET则不是。
SET命令会分解为两个子操作(SET、EXPIRE)。
127.0.0.1:6379> PSETEX KEY milliseconds value
例如,
127.0.0.1:6379> PSETEX KEY1 10000 "Hello" OK 127.0.0.1:6379> PTTL KEY1 (integer) 3858 127.0.0.1:6379> GET KEY1 (nil)
15、INCR
用于将键值表示的整数值增加1。如果该键不存在,则创建该键,并将其值设置为0。
如果键包含错误类型值或包含无法显示的字符串,则返回错误。
并且,整数取值范围:-2^63 ~ 2^63 - 1
127.0.0.1:6379> INCR KEY
例如,
127.0.0.1:6379> SET KEY1 "ABC" OK 127.0.0.1:6379> INCR KEY1 (error) ERR value is not an integer or out of range 127.0.0.1:6379> SET KEY1 9223372036854775807 OK 127.0.0.1:6379> INCR KEY1 (error) ERR increment or decrement would overflow 127.0.0.1:6379> INCR KEY1 127.0.0.1:6379> SET KEY1 9223372036854775806 OK 127.0.0.1:6379> INCR KEY1 (integer) 9223372036854775807
16、INCRBY
用于将键值表示的整数值增加指定值。如果该键不存在,则创建该键,并将其值设置为0。
如果键包含错误类型值或包含无法显示的字符串,则返回错误。
127.0.0.1:6379> INCRBY KEY INCREMENT
例如,
127.0.0.1:6379> SET KEY1 9223372036854775806 OK 127.0.0.1:6379> INCR KEY1 (integer) 9223372036854775807 127.0.0.1:6379> INCRBY KEY1 -1 (integer) 9223372036854775806 127.0.0.1:6379> INCRBY KEY1 -1 (integer) 9223372036854775805 127.0.0.1:6379> INCRBY KEY1 -1 (integer) 9223372036854775804 127.0.0.1:6379> INCRBY KEY1 -1 (integer) 9223372036854775803 127.0.0.1:6379> INCRBY KEY1 5 (error) ERR increment or decrement would overflow 127.0.0.1:6379> INCRBY KEY1 4 (integer) 9223372036854775807
17、INCRBYFLOAT
用于将键值表示的字符串表示为浮点数,按照指定的值进行增加。
如果该键不存在,则创建该键,并将其值设置为0。
如果键包含错误类型值或包含无法显示的字符串,则返回错误。
127.0.0.1:6379> INCRBYFLOAT KEY INCREMENT
例如,
127.0.0.1:6379> SET KEY1 1.23 OK 127.0.0.1:6379> INCRBYFLOAT KEY1 0.5 "1.73"
18、DECR
用于将键值表示的整数值减少1。如果该键不存在,则创建该键,并将其值设置为0。
如果键包含错误类型值或包含无法显示的字符串,则返回错误。
并且,整数取值范围:-2^63 ~ 2^63 - 1
127.0.0.1:6379> DECR KEY
例如,
127.0.0.1:6379> SET KEY1 -9223372036854775807 OK 127.0.0.1:6379> DECR KEY1 (integer) -9223372036854775808 127.0.0.1:6379> DECR KEY1 (error) ERR increment or decrement would overflow
19、DECRBY
用于将键值表示的整数值减少指定值。如果该键不存在,则创建该键,并将其值设置为0。
如果键包含错误类型值或包含无法显示的字符串,则返回错误。
127.0.0.1:6379> DECRBY KEY DECREMENT
例如,
(integer) 9223372036854775802 127.0.0.1:6379> DECRBY KEY1 -1 (integer) 9223372036854775803 127.0.0.1:6379> DECRBY KEY1 -1 (integer) 9223372036854775804 127.0.0.1:6379> DECRBY KEY1 -1 (integer) 9223372036854775805 127.0.0.1:6379> DECRBY KEY1 -1 (integer) 9223372036854775806 127.0.0.1:6379> DECRBY KEY1 -1 (integer) 9223372036854775807 127.0.0.1:6379> DECRBY KEY1 -1 (error) ERR increment or decrement would overflow
20、APPEND
在指定的键后加入指定的字符串,如果该键不存在,则APPEND等同于SET操作。
但是,APPEND返回的是操作后字符串的长度。
127.0.0.1:6379> APPEND KEY VALUE
例如,
127.0.0.1:6379> GET KEY (nil) 127.0.0.1:6379> APPEND KEY 1 (integer) 1 127.0.0.1:6379> GET KEY "1" 127.0.0.1:6379> APPEND KEY "00000" (integer) 6 127.0.0.1:6379> GET KEY "100000"