上篇文章中我们介绍了通用的相关命令,本文主要介绍String相关的命令
Set命令
设置指定 key 的值
127.0.0.1:6379> set name abc OK
Get命令
返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。
127.0.0.1:6379> get name "abc" 127.0.0.1:6379> get aaa (nil)
StrLen命令
获取value的长度
127.0.0.1:6379> strlen name (integer) 10
Append
如果 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
Incr命令
将 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
IncrBy命令
将 key 所储存的值加上特定的值
127.0.0.1:6379> incrby age 5 (integer) 24 127.0.0.1:6379> incrby age 5 (integer) 29
IncrByFloat命令
将 key 所储存的值加上给定的浮点增量值
127.0.0.1:6379> incrbyfloat age 2.3 "31.3" 127.0.0.1:6379> incrbyfloat age 2.3 "33.6"
Decr
将 key 中储存的数字值减一。
如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。
如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误
127.0.0.1:6379> get age "18" 127.0.0.1:6379> decr age (integer) 17
DecrBy
将key中存储的数字减固定的值
27.0.0.1:6379> decrby age 8 (integer) 9 127.0.0.1:6379> decrby age 8 (integer) 1
GetRange
获取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"
SetRange命令
用 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"
GetSet命令
获取设置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"
MGet命令
批量获取值
127.0.0.1:6379> mget name age address 1) "abc" 2) "1" 3) "sz"
MSet命令
批量设置值
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"
SetEx命令
设置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
PSetEx命令
这个命令和 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
SetNx命令
只有在 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"
MSetNx命令
兼具了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)
好了本文到此为止