Key(键)
DEL
格式:DEL key [key ...]
删除给定的一个或多个 key 。
不存在的 key 会被忽略。
可用版本:
>= 1.0.0
时间复杂度:
O(N), N 为被删除的 key 的数量。
删除单个字符串类型的 key ,时间复杂度为 O(1)。
删除单个列表、集合、有序集合或哈希表类型的 key ,时间复杂度为 O(M), M 为以
上数据结构内的元素数量。
返回值:
被删除 key 的数量。
示例代码:
# 删除单个 key
redis> SET name huangz
OK
redis> DEL name
(integer) 1
# 删除一个不存在的 key
redis> EXISTS phone
(integer) 0
redis> DEL phone # 失败,没有 key 被删除
(integer) 0
# 同时删除多个 key
redis> SET name "redis"
OK
redis> SET type "key-value store"
OK
redis> SET website "redis.com"
OK
redis> DEL name type website
(integer) 3
KEYS
格式:keys pattern
查找所有符合给定模式 pattern 的 key 。
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开
警告:KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如
果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。
可用版本:
>= 1.0.0
时间复杂度:
O(N), N 为数据库中 key 的数量。
返回值:
符合给定模式的 key 列表。
示例代码:
redis> MSET one 1 two 2 three 3 four 4 # 一次设置 4 个 key
OK
redis> KEYS *o*
1) "four"
2) "two"
3) "one"
redis> KEYS t??
1) "two"
redis> KEYS t[w]*
1) "two"
redis> KEYS * # 匹配数据库内所有 key
1) "four"
2) "three"
3) "two"
4) "one"
RANDOMKEY
格式:randomkey
从当前数据库中随机返回(不删除)一个 key 。
可用版本:
>= 1.0.0
时间复杂度:
O(1)
返回值:
当数据库不为空时,返回一个 key 。
当数据库为空时,返回 nil 。
示例代码:
# 数据库不为空
redis> MSET fruit "apple" drink "beer" food "cookies" # 设置多个 key
OK
redis> RANDOMKEY
"fruit"
redis> RANDOMKEY
"food"
redis> KEYS * # 查看数据库内所有 key,证明 RANDOMKEY 并不删除 key
1) "food"
2) "drink"
3) "fruit"
# 数据库为空
redis> FLUSHDB # 删除当前数据库所有 key
OK
redis> RANDOMKEY
(nil)
TTL
格式:ttl key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
可用版本:
>= 1.0.0
时间复杂度:
O(1)
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
注:在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令
都返回 -1 。
示例代码:
# 不存在的 key
redis> FLUSHDB
OK
redis> TTL key
(integer) -2
# key 存在,但没有设置剩余生存时间
redis> SET key value
OK
redis> TTL key
(integer) -1