上篇文章中我们介绍了通用的相关命令,本文主要介绍String相关的命令
命令 | 说明 |
---|---|
set | 设置key的值 |
get | 获取对应的key的值 |
strlen | 获取key的值的长度 |
append | 在原有的value的基础上追加内容 |
incr | 将key存储的内容加1 |
incrby | 将key存储的内容加指定的值 |
incrbyfloat | 将key存储的内容累加一个float类型的数据 |
decr | 将key存储的内容减1 |
decrby | 将key存储的内容减去指定的值 |
getrange | 截取value的值 |
setrange | 修改value的部分内容,根据偏移量修改 |
getset | 获取设置key的值并返回原来的旧值 |
mget | 批量获取值 |
mset | 批量设置值 |
setex | 设置key对应的value,同时设置过期时间,单位是秒 |
psetex | 设置key对应的value,同时设置过期时间,单位是毫秒 |
setnx | 只有在 key 不存在时设置 key 的值,set if not exists |
msetnx | 兼具了mset和setnx的特性 |
设置指定 key 的值
127.0.0.1:6379> set name abc
OK
返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> get aaa
(nil)
获取value的长度
127.0.0.1:6379> strlen name
(integer) 10
如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾,如果key不存在则报错
127.0.0.1:6379> append name 123
(integer) 6
127.0.0.1:6379> get name
"abc123"
127.0.0.1:6379> append aaa
(error) ERR wrong number of arguments for 'append' command
将 key 中储存的数字值增一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> incr age
(integer) 19 #正常数字增1
127.0.0.1:6379> incr aaa
(integer) 1 # 不存在 初始为0增1
127.0.0.1:6379> incr name # 类型不匹配报错
(error) ERR value is not an integer or out of range
将 key 所储存的值加上特定的值
127.0.0.1:6379> incrby age 5
(integer) 24
127.0.0.1:6379> incrby age 5
(integer) 29
将 key 所储存的值加上给定的浮点增量值
127.0.0.1:6379> incrbyfloat age 2.3
"31.3"
127.0.0.1:6379> incrbyfloat age 2.3
"33.6"
将 key 中储存的数字值减一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> decr age
(integer) 17
将key中存储的数字减固定的值
27.0.0.1:6379> decrby age 8
(integer) 9
127.0.0.1:6379> decrby age 8
(integer) 1
获取value值的子集 命令 getrange key start end
127.0.0.1:6379> getrange name 2 5
"c123"
127.0.0.1:6379> getrange name 4 6
"23"
127.0.0.1:6379> getrange name 2 6
"c123"
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
127.0.0.1:6379> set name helloworld
OK
127.0.0.1:6379> get name
"helloworld"
127.0.0.1:6379> setrange name 5 redis
(integer) 10
127.0.0.1:6379> get name
"helloredis"
获取设置key的值并返回原来的旧值
127.0.0.1:6379> getset name 波波烤鸭
"abc123"
127.0.0.1:6379> get name
"\xe6\xb3\xa2\xe6\xb3\xa2\xe7\x83\xa4\xe9\xb8\xad"
批量获取值
127.0.0.1:6379> mget name age address
1) "abc"
2) "1"
3) "sz"
批量设置值
127.0.0.1:6379> mset a1 a1 a2 a2 a3 a3 a4 a4
OK
127.0.0.1:6379> mget a1 a2 a3 a4
1) "a1"
2) "a2"
3) "a3"
4) "a4"
设置key对应的value,同时设置过期时间,单位是秒
127.0.0.1:6379> setex name1 20 test
OK
127.0.0.1:6379> ttl name1
(integer) 16
127.0.0.1:6379> ttl name1
(integer) 6
127.0.0.1:6379> ttl name1
(integer) -2
这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位
127.0.0.1:6379> psetex name2 20000 aaa
OK
127.0.0.1:6379> ttl name2
(integer) 17
127.0.0.1:6379> pttl name2
(integer) 4020
127.0.0.1:6379> pttl name2
(integer) 381
只有在 key 不存在时设置 key 的值,set if not exists
127.0.0.1:6379> setnx name aaa
(integer) 0
127.0.0.1:6379> get name
"abc"
127.0.0.1:6379> setnx name3 aaa
(integer) 1
127.0.0.1:6379> get name3
"aaa"
兼具了mset和setnx的特性,但是批量设置中只要有一个key存在,则所有的操作都失效。
127.0.0.1:6379> msetnx b1 bb1 b2 bb2 b3 bb3
(integer) 1
127.0.0.1:6379> mget b1 b2 b3
1) "bb1"
2) "bb2"
3) "bb3"
127.0.0.1:6379> msetnx a1 aaa b5 bbb b6 bbb
(integer) 0
127.0.0.1:6379> mget a1 b5 b6
1) "a1"
2) (nil)
3) (nil)
好了本文到此为止 更多资料欢迎参考官网手册