三、Redis字符串类型基本操作记录(1)
字符串类型是Redis中最基本的数据类型,String可以存储任何形式的字符串,包括二进制数据。
一个String类型键允许存储的数据最大容量是512MB。
set 设置指定key的值
语法:set key value
127.0.0.1:6379> set name zhaoliu
OK
127.0.0.1:6379> set name 'li si'
OK
1)set设置给定key的值。如果key已存储其它值,则覆盖旧值;
2)如果有空格等其它字符,则使用引号包含。
get 获取指定key的值
语法:get key
127.0.0.1:6379> get name
"li si"
# 获取不存在的key
127.0.0.1:6379> get name1
(nil)
# 获取不是String类型的key
127.0.0.1:6379> lpush a '111'
(integer) 3
127.0.0.1:6379> get a
(error) WRONGTYPE Operation against a key holding the wrong kind of value
获取指定key的值,如果key不存在,则返回nil,如果key存储的值不是String类型,则返回错误
mset 设置一个或多个key-value对
语法:mset key1 value1 key2 value2 ...
127.0.0.1:6379> mset keya valuea keyb valueb
OK
# 设置已经存在的key
127.0.0.1:6379> mset keya 'i ma a' keyb 'i am b'
OK
如果key存在,则新值覆盖旧值
mget 获取一个或多个给定key的值
语法:mget key1 key2 ...
# 获取一个key的值
127.0.0.1:6379> mget keya
1) "i ma a"
# 获取多个key的值
127.0.0.1:6379> mget keya keyb
1) "i ma a"
2) "i am b"
msetnx 设置一个或多个key-value对,当且仅当所有key不存在
语法:msetnx key1 value1 key2 value2 ...
127.0.0.1:6379> msetnx a1 10 a2 20
(integer) 1
# 存在key,设置不成功
127.0.0.1:6379> msetnx num 10 age 10
(integer) 0
getset 设置指定key的值,并返回旧值
语法:getset key value
127.0.0.1:6379> getset name 'wang wu'
"li si"
127.0.0.1:6379> get name
"wang wu"
# key不存在,返回nil
127.0.0.1:6379> getset aa 'i am aa'
(nil)
1)当key不存在时,返回nil
2)当key不是字符串时,报错
setrange 为指定的key进行指定范围的value值,从offset处开始重写
语法:setrange key offset value
# 将指定偏移量开始处的值进行重写
127.0.0.1:6379> get name
"wang wu"
127.0.0.1:6379> setrange name 5 hello
(integer) 10
127.0.0.1:6379> get name
"wang hello"
127.0.0.1:6379>
getrange 获取指定在key中指定范围(偏移量)的字符串
语法:getrange key start end
# 获取所有指定范围的内容,如同get
127.0.0.1:6379> get keya
"i ma a hello"
127.0.0.1:6379> getrange keya 0 -1
"i ma a hello"
# 获取keya中hello
127.0.0.1:6379> getrange keya 7 -1
"hello"
127.0.0.1:6379> getrange keya 7 12
"hello"
append 为指定的key追加值
语法:append key value
# 已存在的key
127.0.0.1:6379> append keya ' hello'
(integer) 12
127.0.0.1:6379> get keya
"i ma a hello"
# 不存在的key
127.0.0.1:6379> append name 'li si'
(integer) 5
127.0.0.1:6379> get name
"li si"
1)若key存在,则将value追加到原来的key值的末尾
2)若key不存在,则进行设置改key的值为value,可以理解为执行set操作
strlen 获取指定key中值的长度
语法:strlen key
127.0.0.1:6379> strlen keya
(integer) 12
# key不存在,返回0
127.0.0.1:6379> strlen ziruchu
(integer) 0
# key不是字符串时报错
127.0.0.1:6379> lpush db mysql redis
(integer) 2
127.0.0.1:6379> strlen db
(error) WRONGTYPE Operation against a key holding the wrong kind of value
1)只能获取key类型为字符串的值的长度,否则报错
2)当key不存在时,返回0