redis字符串跟大多数编辑语言一样,是最常用,也是最简单的类型。
redis的字符串不仅只处理字符串的内容,可以处理如下几种类型:
- 字符串
- 整数
- 浮点数
1.set与get及相关命令
set key value可以为key设置一个值为value
get ket 获取key对应的value值
mset可以同时为多个key设置值
mget可以同时获取多个key的值
setnx key value 当key不存在时,跟set一样的效果,当key存在时,什么也不做
msetnx 批量设置值,设置的所有key都不存在时才会设置成功,只要有一个key存在,所有值都设置不成功。该特性可用于实现 要么操作都成功,要么一个都不执行
setex key seconds value 给key设置值value,并指定在seconds时间后过期(时间为秒)
psetex 同setex,时间为毫秒
127.0.0.1:6379> set name pengzhangjun
OK
127.0.0.1:6379> get name
"pengzhangjun"
127.0.0.1:6379> mset name1 jack name2 tom name3 lily
OK
127.0.0.1:6379> mget name1 name2 name3
1) "jack"
2) "tom"
3) "lily"
127.0.0.1:6379> setnx name yetian
(integer) 0
127.0.0.1:6379> setex sex 5 man
OK
127.0.0.1:6379> get sex
"man"
127.0.0.1:6379> get sex
(nil)
127.0.0.1:6379> mset name1 jack name2 tom
OK
127.0.0.1:6379> msetnx name2 kity name3 jackson name4 lily
(integer) 0
127.0.0.1:6379> msetnx name3 jackson name4 lily
(integer) 1
2.incr与decr 相关命令
incr将key对应的值加1
decr将ket对应的值减1
incr是原子操作,这意味着多个客户端对同一个key进行incr操作,不会出现竞争的情况
incrby将key加对应的值,比如,incrby key 10表示将key加10
decrby将ket减对应的值,同incrby
incr和decr命令执行后,会返回当前key的值
若key对应的值为字符串,执行incr或decr会报错
127.0.0.1:6379> incr num1
(integer) 1
127.0.0.1:6379> incr num1
(integer) 2
127.0.0.1:6379> get num1
"2"
127.0.0.1:6379> decr num1
(integer) 1
127.0.0.1:6379> get num1
"1"
127.0.0.1:6379> incrby num1 10
(integer) 10
127.0.0.1:6379> decrby num1 5
(integer) 5
127.0.0.1:6379> set num2 hello
OK
127.0.0.1:6379> get num2
"hello"
127.0.0.1:6379> incr num2
(error) ERR value is not an integer or out of range
127.0.0.1:6379> decr num2
(error) ERR value is not an integer or out of range
3.字符串相关命令
append字符串拼接、追加,执行完之后会返回字符串的长度
substr key start end 字符串截取,截取偏移量为start和end之间的字符串
setrange key offset value将key对应的字符串值偏移量为offset的值设置为value
getrange key start end 获取key对应的字符串值偏移量在start和end间的字符串值(包含start和end),相当于字符串截取,此命令是从substr改名而来的
127.0.0.1:6379> append str1 hello
(integer) 5
127.0.0.1:6379> append str1 world
(integer) 10
127.0.0.1:6379> get str1
"helloworld"
127.0.0.1:6379> substr str1 3 7
"lowor"
127.0.0.1:6379> getrange str1 3 7
"lowor"
127.0.0.1:6379> setrange str1 0 H
(integer) 10
127.0.0.1:6379> get str1
"Helloworld"
127.0.0.1:6379> setrange str1 5 W
(integer) 10
127.0.0.1:6379> get str1
"HelloWorld"
4.有趣的命令getset
getset key value将key的值设置为新值value,并返回旧值
127.0.0.1:6379> set name pengzhangjun
OK
127.0.0.1:6379> getset name jack
"pengzhangjun"
127.0.0.1:6379> get name
"jack"
5.exists
exists命令判断key是否存在
127.0.0.1:6379> exists name
(integer) 1
6.del
del命令删除key对应的值
127.0.0.1:6379> del name
(integer) 1
7.type
type命令可以返回key对应值的类型
因redis只有字符串类型,所以就算key存储的值为整形或浮点型,返回的类型还是String,说明数字类型被当成string来存储处理的
127.0.0.1:6379> set name pengzhangjun
OK
127.0.0.1:6379> type name
string
127.0.0.1:6379> set num1 123
OK
127.0.0.1:6379> type name
string
8.strlen
strlen获取字串的长度
127.0.0.1:6379> set name pengzhangjun
OK
127.0.0.1:6379> strlen name
(integer) 12