版权声明: 转载请注明出处!本文采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际许可协议
前言
再来看三个可能会用到的操作键的命令,这三个命令有些杂,彼此之间没有什么关系,KEYS 可以根据模式串找符合条件的键,TYPE 用于查询一个键的类型,而 RENAME 用于重命名,接下来看一下具体的用法。
KEYS
- 最早出现版本:1.0.0
- 时间复杂度:O(1)
- 命令参数:KEYS pattern
- 操作类型:keys
- 官方文档
作用
其实这是个查找命令,但外表看起来一点也不像,感觉查找命令应该写成 getkeys 更能说明功能吧,可是官方确实定义成了 KEYS,如果有一点正则表达式的经验,对这个匹配模式应该很熟悉,keys 可以通过模式串找到一系列的键,其中有些是常用的:
*
可以匹配任意长字符,例n*me
可以匹配nme
、name
、nzzme
等等?
可以匹配一个任意字符,例如n?me
可以匹配name
、nzme
,但是无法匹配nabme
,因为多了一个字符[ad43]
可以表示匹配可选集,例如n[ab]me
只可以匹配name
和nbme
,无法再匹配其他的[0-9]
是上一种的简写方式,代表了[0123456789],其他范围也可以简写,比如匹配小写字母[a-z][^ab]
反向匹配,匹配集合中出现^
表示不匹配集合中的内容,例n[^ab]me
可以匹配nzme
,但无法匹配name
练习
查找出Redis数据中所有的键,只用一个*
就可以了,因为 *
可以匹配任意长度的任何字符。
127.0.0.1:6379> KEYS * 1) "user" 2) "score" 3) "num" 4) "key" 5) "count" 6) "length" 7) "namr" 8) "address" 9) "str" 10) "weight" 11) "user:1001" 127.0.0.1:6379>
复制
以上就是我这段时间以来做测试设置的所有键,Redis 的官方文档中提到,使用这个命令时应该小心谨慎,可以用在调试过程或者一些特殊的情况,最好不要用在常规代码中,因为随着时间的推移可能引发效率问题,虽说 Redis 很快,但是如果不加节制,数据库中的键太多了,使用这个命令还是会带来效率问题。
TYPE
- 最早出现版本:1.0.0
- 时间复杂度:O(1)
- 命令参数:TYPE key
- 操作类型:keys
- 官方文档
作用
很简单的一个工具命令,查询键的类型,返回值有 string
、 hash
、list
、 set
、zset
和 stream
几种,如果查询的键不存在则返回 none
练习
查询一个常用的键的类型和一个不存在的键的类型:
127.0.0.1:6379> SET name albert OK 127.0.0.1:6379> GET name "albert" 127.0.0.1:6379> TYPE name string 127.0.0.1:6379> GET haha (nil) 127.0.0.1:6379> TYPE haha none 127.0.0.1:6379>
复制
RENAME
- 最早出现版本:1.0.0
- 时间复杂度:O(1)
- 命令参数:RENAME key newkey
- 操作类型:keys
- 官方文档
作用
重新命名键的名字,几乎每天都会用到重命名,文件重命名,备注重命名,而在 Redis 中也有 RENAME 命令,可以将一个旧的键名修改成新的名字,如果这个新名字原来已经存在了,那么原来的键被覆盖,因为这个命令可能会音势的调用 DEL 命令,所以在删除一个大数据的键时可能会产生较高延时。
在集群模式下,要求新旧两个键名必须在相同的散列槽内,在3.2.0版本以前新旧键名如果相同会报错的。
练习
修改一个键的名字然后再改回来:
27.0.0.1:6379> SET name albert OK 127.0.0.1:6379> GET name "albert" 127.0.0.1:6379> RENAME name firstname OK 127.0.0.1:6379> GET name (nil) 127.0.0.1:6379> GET firstname "albert" 127.0.0.1:6379> RENAME firstname name OK 127.0.0.1:6379> GET firstname (nil) 127.0.0.1:6379> GET name "albert" 127.0.0.1:6379>
复制
总结
- KEYS 命令可以根据模式串找到符合条件的键的列表,最好学习点正则表达式的知识。
- TYPE 命令返回指定键的类型,如果不存在返回none。
- RENAME 命令可以将键重命名,命名成功会返回OK。
2019-12-3 20:38:18