1.简述
String类型是Redis最简单的数据类型,一个key对应一个value,它在Redis中是二进制安全的,这意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
2.命令表
3.操作实例
①set命令,设置key的value
redis 127.0.0.1:6379> set name hzsunpeng
OK
redis 127.0.0.1:6379> get name
"hzsunpeng"
②setnx,如果key已经存在,则不能设置新value,否则设置
redis 127.0.0.1:6379> setnx name hzsunpeng_new
(integer) 0
③批量设置,mset,一次可以设置多个key,全部成功返回OK,否则返回0
redis 127.0.0.1:6379> mset name hzsunpeng age 25 sex 1 address hangzhou
OK
redis 127.0.0.1:6379> keys *
1) "sex"
2) "age"
3) "name"
4) "address"
redis 127.0.0.1:6379> get sex
"1"
redis 127.0.0.1:6379> get address
"hangzhou"
redis 127.0.0.1:6379> get name
"hzsunpeng"
redis 127.0.0.1:6379> get age
"25"
④setex,指定key-value的有效期,单位是秒
redis 127.0.0.1:6379> setex color 10 red
OK
redis 127.0.0.1:6379> get color
"red"
redis 127.0.0.1:6379> get color
"red"
redis 127.0.0.1:6379> get color
"red"
redis 127.0.0.1:6379> get color
"red"
redis 127.0.0.1:6379> get color
"red"
redis 127.0.0.1:6379> get color
(nil)
最后由于过期而返回nil
⑤setrange命令,设置指定key的value值的子字符串。下例,将163邮箱替换为谷歌邮箱,第一个参数是要设置的key,第二个参数是从哪里开始设置,第三个参数是要设置(修改)的内容,返回修改后的key的字符串
redis 127.0.0.1:6379> set email hzsunpeng@163.com
OK
redis 127.0.0.1:6379> setrange email 10 gail.com
(integer) 18
redis 127.0.0.1:6379> get email
"hzsunpeng@gail.com"
注意:替换后的字符串没有原来字符串长,那么原字符串将拼接,例如:
redis 127.0.0.1:6379> get email
"hzsunpeng@gail.com"
redis 127.0.0.1:6379> setrange email 10 dlut
(integer) 18
redis 127.0.0.1:6379> get email
"hzsunpeng@dlut.com"
原来的.com会保留
⑥msetnx,批量设置多个key,所有key设置成功返回1,没有任何key被设置则返回0,但是不会覆盖已经存在的key,只要有一个key已经存在,即设置不成功,那么所有的便不能设置成功,刚才name email sex age address全都已经设置,现在:
redis 127.0.0.1:6379> msetnx job java_engineer corp netease age 26
(integer) 0
redis 127.0.0.1:6379> get corp
(nil)
redis 127.0.0.1:6379> get job
(nil)
因为age已经存在,所以所有key全部没有设置成功。
redis 127.0.0.1:6379> msetnx job java_engineer corp netease
(integer) 1
redis 127.0.0.1:6379> get job
"java_engineer"
redis 127.0.0.1:6379> get corp
"netease"
现在则可以批量设置成功。
⑦getset,设置一个key的value,并且返回key的旧value
redis 127.0.0.1:6379> getset age 26
"25"
⑧getrange 获取子字符串
redis 127.0.0.1:6379> get email
"hzsunpeng@dlut.com"
redis 127.0.0.1:6379> getrange email 0 8
"hzsunpeng"
⑨mget批量获取
redis 127.0.0.1:6379> mget name age sex address job corp
1) "hzsunpeng"
2) "26"
3) "1"
4) "hangzhou"
5) "java_engineer"
6) "netease"
⑩incr和incrby
redis 127.0.0.1:6379> get age
"26"
redis 127.0.0.1:6379> incr age
(integer) 27
redis 127.0.0.1:6379> incr age
(integer) 28
redis 127.0.0.1:6379> get age
"28"
redis 127.0.0.1:6379> incrby age 10
(integer) 38
redis 127.0.0.1:6379> get age
"38"
若incrby的key不存在,则设置初始值为0
decr和decrby和上述类似,不再赘述,只是减操作。
⑪append,追加,返回新字符串的长度
redis 127.0.0.1:6379> get address
"hangzhou"
redis 127.0.0.1:6379> append address _binjiang
(integer) 17
redis 127.0.0.1:6379> get address
"hangzhou_binjiang"
⑫strlen,返回字符串value的长度
redis 127.0.0.1:6379> strlen name
(integer) 9
redis 127.0.0.1:6379> strlen address
(integer) 17