本文介绍: RENAME 命令的另一种可能是,尝试将一个带生存时间key 改名成另一个带生存时间another_key ,这时旧的 another_key (以及它的生存时间)会被删除然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key。] 删除给定的一个或多个 key。
一、DEL

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

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
"x00bzhangsanx06x00xe1xd1x98xa5mmx1axdb"
127.0.0.1:6379> dump name1
(nil)
三、EXISTS

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

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

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

KEYS pattern

查找所有符合给定模式 pattern 的 key 。 KEYS 匹配数据库中所有 key 。KEYS h?llo 匹配 hellohallo 和 hxllo 等。KEYS hllo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hellohallo ,但不匹配 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"

原文地址:https://blog.csdn.net/fuyuan98520/article/details/134598004

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_5703.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注