DEL key [key …] 删除给定的一个或多个 key 。
不存在的 key 会被忽略。
#删除单个键
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> del name
(integer) 1
# 删除一个不存在的 key, 失败,没有 key 被删除
127.0.0.1:6379> EXISTS phone
(integer) 0
127.0.0.1:6379> del phone
(integer) 0
# 同时删除多个 key
127.0.0.1:6379> set name redis
OK
127.0.0.1:6379> set type hello
OK
127.0.0.1:6379> set age 13
OK
127.0.0.1:6379> del name type age
(integer) 3
DUMP key
序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键。
序列化生成的值有以下几个特点:
(1)它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和。 值的编码格式和 RDB 文件保持一致。
(2)RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 会拒绝对这个值进行反序列化操作。
(3)序列化的值不包括任何生存时间信息。
# 如果 key 不存在,那么返回 nil 。否则,返回序列化之后的值。
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> dump name
"\x00\bzhangsan\x06\x00\xe1\xd1\x98\xa5mm\x1a\xdb"
127.0.0.1:6379> dump name1
(nil)
EXISTS key
检查给定 key 是否存在。
127.0.0.1:6379> set name shangsan
OK
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists db
(integer) 0
EXPIRE key seconds
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。
生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。 比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。
另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。 RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。
使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key 。 更新生存时间 可以对一个已经带有生存时间的 key 执行 EXPIRE 命令,新指定的生存时间会取代旧的生存时间。
127.0.0.1:6379> set cache zhangsan
OK
# 设置过期时间为 30 秒
127.0.0.1:6379> expire cache 30
(integer) 1
127.0.0.1:6379> ttl cache # 查看剩余生存时间
(integer) 25
127.0.0.1:6379> expire cache 3000
(integer) 1
127.0.0.1:6379> ttl cache # 更新过期时间
(integer) 2997
EXPIREAT key timestamp
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置生存时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> expireat name 1700896579000 #在2023-11-25 15:16:19过期
(integer) 1
127.0.0.1:6379> ttl name
(integer) 1699195768750
KEYS pattern
查找所有符合给定模式 pattern 的 key 。 KEYS 匹配数据库中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS hllo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开 Warning KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 key ,你最好还是用 Redis 的集合结构(set)来代替。
127.0.0.1:6379> mset one 1 two 2 three 3 four 4 # 一次设置 4 个 key
OK
127.0.0.1:6379> keys *o*
1) "stock"
2) "four"
3) "one"
4) "two"
127.0.0.1:6379> keys t??
1) "two"
127.0.0.1:6379> keys t[w]*
1) "two"
127.0.0.1:6379> keys * # 匹配数据库内所有 key
1) "[a2"
2) "stock"
3) "three"
4) "name"
5) "a3"
6) "a2"
7) "four"
8) "b1"
9) "one"
10) "two"
11) "cache"
12) "a1"