2.2 针对字符串的命令
Redis是基于"键值对"的NoSQL.而此处的"string"是指"键值对"中的"值"是以"string"形式存储数据的.
2.2.1 读写字符串的set和get命令
设置字符串对象的语法:
其中:
key
: 键名.若对应的key中已经有值,那么再次执行SET
命令时会用新的value替换旧的valuevalue
: 字符串类型的值EX/PX
: 设置生存周期.其中EX
的单位为秒;PX
的单位为毫秒NX
: 当key
不存在时才进行设置值的操作,若key存在则该命令不执行XX
: 与NX
相反,表示当key存在时才进行操作KEEPTTL
: 在设置新的键值对时,保持原有的TTL(Time To Live,生存时间)不变.该选项为Redis 6.0新增选项.当使用
SET
命令对一个已经存在的key设置value时,若该key已经存在生存周期,则新的SET
命令会移除这个生存周期.此时加上KEEPTTL
选项,则表示保持该key原有的生存周期不变.
需求:工号为001的员工姓名为Mike,这条数据是存储在Emp表里的,但是每次查询该数据时需要读表,这会影响数据库的性能,所以需要在Redis里缓存该条数据.
设置了错误的员工姓名:
注意:此处的'Mary'
带有'
,表示设置的值类型为字符串
此处的返回值OK
表示设置成功
尝试将姓名修改为Mike:
此处的返回值nil
表示设置不成功
此处的setNX key value
和set key value NX
是等价的.返回值(integer) 0
同样表示设置不成功
查看key
为001
的值:
将key
为001
的值替换为Mike:
查看结果:
例:将工号为002、姓名为Tom的数据写入Redis:
确认key是否存在:
此处返回值nil
表示没有找到key为002
的数据
当key为002
的数据存在时设置其值为'Tom'
:
此处由于key为002
的数据不存在,故不进行操作,该SET
命令返回值为nil
表示没有进行操作
设置key为002的value为'Tom'
,生存周期为10ms:
10ms后获取key为002的value:
此处返回nil
表示没有获取到对应的值
设置key为002的value为'Tom'
,生存周期为12分钟:
报错原因:生存周期必须为一个数值,不能是一个表达式
可以看到,值设置成功.
查看结果:
2.2.2 设置和获取多个字符串的命令
MSET
:设置多个字符串语法:
MSET key value [key value]
MGET
:获取多个字符串语法:
MGET key [key]
注意:MSET
、MGET
命令不包含NX
、XX
、EX
、PX
等参数
例:
同时对003
和004
这2个key设置string类型的值:
注:此处虽然使用EX
参数设置了生命周期,但实际上这个生命周期不会生效
注:可以看到,字符串可以用"
或'
包含,也可以不包含.效果相同
10秒后使用MGET
命令获取key为003和004的value:
可以看到,虽然使用MSET
命令设置了生命周期为10s,但并未生效.10s后依旧能通过key取到value
使用MSET
指令时同时指定NX
或XX
参数:
可以看到,MSET
命令不支持NX
和XX
参数
同时对007
和008
这2个key设置string类型的值:
注:此处虽然使用PX
参数设置了生命周期,但实际上这个生命周期不会生效
10ms后使用MGET
命令获取key为007
和008
的value:
可以看到,虽然使用MSET
命令时通过PX
选项设置了生命周期为10ms,但并未生效.10ms后依旧能通过key取到value.即:PX
和EX
参数不会生效
2.2.3 对值进行增量和减量操作
INCR key
:对key所对应的数字类型值进行加1操作DECR key
:对key所对应的数字类型值进行减1操作INCRBY key increment
:对key对应的值进行加increment的操作DECRBY key decrement
:对key对应的值进行减decrement的操作
对visit变量进行加1操作:
对visit进行加10操作:
对visit进行减1操作:
对visit进行减5操作:
将INCR
命令和DECR
命令作用在字符串类型上:
可以看到,将INCR
命令和DECR
命令作用在字符串类型上会报错.
2.2.4 通过getset命令设置新值
GETSET
:若key对应的值存在,则用给定的值覆盖旧的值,同时返回旧的值;若key对应的值不存在,也会设置值,但会返回nil
.语法:GETSET key value
2.2.5 针对字符串的其他操作
GETRANGE
:语法:
GETRANGE key start end
功能:获取key的子字符串.返回key对应的值从start位置开始到end位置为止的子字符串.其中位置的计算从0开始.返回的子字符串包含start位置和end位置
例:
SETRANGE
:语法:
SETRANGE key offset value
功能:从offset位置开始,把值替换为value.该命令的返回值是字符串的长度
例:
注:若offset超出了字符串的长度,则会用空白字符(\x00
)进行填充,填充至到达指定的偏移量后再进行替换.这个过程可能会导致字符串长度的增加.
STRLEN
:语法:
STRLEN key
功能:返回字符串的长度
APPEND
语法:
APPEND key value
功能:将value追加到原值的末尾.该命令的返回值是追加后的字符串的长度
注:若对一个不存在的key使用APPEND
指令,则等价于SET
指令
Last updated