1.介绍
- String是Redis最基本的类型,一个key对应一个value
- String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象
- 一个字符串value最多可以是512M
2.操作
set <key> <value>
:添加键值对
set k1 100
set k2 200
get <key>
: 查询对应键值
# 获取k1的值
get k1
append <key><value>
:将给定的追加到原值的末尾
# 在k1的末尾加上abc
append k1 abc
strlen <key>
:获得值的长度
# 获取k1的长度
strlen k1
setnx <key> <value>
:只有在key不存在时,设置key的值
# 如果k1不存在,将k1设置为bbb
setnx k1 bbb
incr <key>
: 将key中存储的数字加1,只能对数字值操作,如果为空,新增值为1
# 将k1的值增加1
incr k1
decr <key>
: 将key中存储的数字减1,只能对数字值操作,如果为空,新增值为-1
# 将k1的值减少1
decr k1
incrby/decrby <key> <步长>
: 将key中存储的数字值增减,自定义步长
# 将k1的值增加20
incrby k1
mset <key1><value1><key2><value2>......
: 同时设置一个或多个key-value对
mset k1 v1 k2 v2 k3 v3
mget<key1><key2><key3>...
: 同时获取一个或多个value
# 获取 k1、k2、k3的值
mget k1 k2 k3
msetnx<key1><value1><key2><value2>......
: 同时设置一个或多个key-value对,当且仅当所有给定key都不存在。原子性,有一个失败则都失败
msetnx k1 v1 k2 v2 k3 v3
getrange <key><起始位置><结束位置>
: 获得值的范围,类似java中的substring,前包,后包
# 获取name的第0到第3个字符
getrange name 0 3
setrange <key><起始位置><value>
: 用复写所存储的字符串值,从<起始位置>开始(索引从0开始)
# 将name的第1个字符设置为abc
setrange name 1 abc
setex <key><过期时间><value>
: 设置键值的同时,设置过期时间,单位秒
# 设置name 5秒之后过期
setex name 5 jack
getset <key><value>
: 以新换旧,设置新值同时获取旧值
# 获取name的值,同时将name设置为jack
getset name jack
3.数据结构
String的数据结构为简单的动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配