Redis 有5种数据结构,但它们都是键值对种的值,对于键来说有⼀些通⽤的命令。
KETS
返回所有满⾜样式(pattern)的key。⽀持如下统配样式。
h?llo 匹配 hello, hallo 和 hxllo
h*llo 匹配 hllo 和 heeeeeello
h[ae]llo 匹配 hello 和 hallo 但不匹配 hillo
h[^e]llo 匹配 hallo, hbllo, ...但不匹配 hello
h[a-b]llo 匹配 hallo 和 hbllo
语法:
KEYS pattern
命令有效版本:1.0.0之后
时间复杂度:O(N)
返回值:匹配pattern的所有key。
⽰例:
redis> MSET firstname Jack lastname Stuntman age 35"OK"redis> KEYS *name*1) "firstname"2) "lastname"redis> KEYS a??1) "age"redis> KEYS *1) "age"2) "firstname"3) "lastname"
EXISTS
判断某个key是否存在。
语法:
EXISTS key [key ...]
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:key存在的个数。
⽰例:
redis> SET key1 "Hello""OK"redis> EXISTS key1(integer) 1redis> EXISTS nosuchkey(integer) 0redis> SET key2 "World""OK"redis> EXISTS key1 key2 nosuchkey(integer) 2
DEL
删除指定的key。
语法:
DEL key [key ...]
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:删除掉的key的个数。
⽰例:
redis> SET key1 "Hello""OK"redis> SET key2 "World""OK"redis> DEL key1 key2 key3(integer) 2
EXPIRE
为指定的key添加秒级的过期时间(TimeToLiveTTL)
语法:
EXPIRE key seconds
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:1表⽰设置成功。0表⽰设置失败。
⽰例:
redis> SET mykey "Hello""OK"redis> EXPIRE mykey 10(integer) 1redis> TTL mykey(integer) 10
TTL
获取指定key的过期时间,秒级。
语法:
TTL key
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:剩余过期时间。-1表⽰没有关联过期时间,-2表⽰key不存在。
⽰例:
redis> SET mykey "Hello""OK"redis> EXPIRE mykey 10(integer) 1redis> TTL mykey(integer) 10
EXPIRE和TTL命令都有对应的⽀持毫秒为单位的版本:PEXPIRE和PTTL
TYPE
返回key对应的数据类型。
语法:
TYPE key
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:none , string , list , set , zset , hash , stream
⽰例:
redis> SET key1 "value""OK"redis> LPUSH key2 "value"(integer) 1redis> SADD key3 "value"(integer) 1redis> TYPE key1"string"redis> TYPE key2"list"redis> TYPE key3"set"