Redis 键(key)命令
基础命令
对于Redis的key命令,我们来了解一下常用的几个命令,我们平时使用频率比较高的几个命令。
Del
这个命令其实很简单啦,就是删除指定的key。其命令也很简单,为:Del key1 ... keyN
。返回值为删除的key的数量。
Exists
这个命令和Del命令一样简单,就是检查指定的key是否存在。其命令同样简单,为:Exsits key1 ... keyN
。返回值为存在的key的数量。这里分情况解释一下:
- 当只查询一个key是否存在的时候,
- 1->存在
- 0->不存在
- 当查询多个key的时候
- 0->都不存在
- 查询数量等于返回值大小,所有查询值都存在
- 查询数量小于返回值大小,有部分的key不存在,但Redis没有告诉我们哪个不存在
Expire
这个命令相对来说就复杂了一些,但也算简单的。它的作用就是给指定的key设置过期时间,单位为*秒*。其命令形式为:Expire key timeout
。key只在指定的时间内有效,过了有效时间,key将不可用。当设置成功的时候,会返回1,而当key不存在或者不能给key设置过期时间的时候,将返回0。有人说了,这个命令给key设置的过期时间为秒,那我们有没有办法设置过期时间或者我们能不能设置某个值在某个具体的时间失效,而不用自己去计算呢?其实,Redis已经为我们准备了相应的命令:PExpire,ExpireAt和PExpireAT。
PExpire
这个命令和Expire是一样的,只是指定的时间的单位由秒->毫秒。
ExpireAt
这个命令的作用和Expire也是一直的,也是设置过期时间,但设置的不再是时间长度,而是指定具体到何时过期。值是一个具体的时间点,为时间戳。命令为:ExpireAt key timestamp
。
PExpireAt
和ExpireAt作用一致,区别在于时间戳的单位不再是秒,而是毫秒时间戳。
既然我们已经为key设置了过期时间,我们总得用办法知道,这个key还可以生存多长时间吧,在这个时候,我们就需要使用TTL和PTTL命令了。没错,这两个命令的区别在于,TTL的单位为秒,PTTL的单位为毫秒,你一定猜到了,对吧?:laughing:
TTL
是单词Time To Live的缩写,记住这个单词,这个命令和这个命令的作用相信你已经记住个80%~90%。其命令为:TTL key
。返回值:
- -2 key不存在
- -1 key没有设置过期时间
- 其他值:剩余的生存时间
PTTL
和TTL一样,只是剩余时间的单位为毫秒。
我们现在已经知道如何给某个key设置过期时间,以及查询其剩余的生存时间,那当我们想将这个key设置为永久生效,即取消过期时间的时候,我们应该怎么办呢?这个时候,我闷就用到了Persist命令了。
Persist
这个命令的形式为:Persist key
。就是这么简单,这样我们就可以取消该key的过期时间了。当过期时间取消成功的时候,返回值为1。而当key不存在或者key美誉设置过期时间的时候,返回0。
Type
查询key存储值的类型,返回值为以下之一:
- string 字符串
- list 列表
- set 集合
- zset 有序集合
- hash 哈希表
- none key不存在
Rename
修改key的名称。很简单吧,其语法也简单:Rename old_key new_key
。请注意,在这两种情况下,会返回错误:
- old_key 不存在
- old_key 和 new_key 相同
注意,当new_key已经存在的时候,旧值会被覆盖!!!
RenameNx
和Rename一样,也是给key改名,但只有当new_key不存在的时候才会执行。并且成功后返回1,new_key已经存在时,返回0。这个命令可以避免当new_key已经存在的时候,不小心覆盖旧值的问题。
Keys
按照给定正则表达式查找符合此模式的key。其命令为:keys pattern
返回值为查询到的值组成的列表。当需要查找所有值的时候,可使用keys *
。
RandomKey
顾名思义,这个命令就是从当前数据库中随机返回一个key.那么,当数据库中没有key时,会返回什么呢?答案是:nil。
Move
这个命令将指定的key迁移到指定的数据库中。命令为:Move key destiantion
。当迁移成功的时候,返回1,失败,返回0。
注意,如果当前key已经存在于目标数据库,则会迁移失败。
Dump
序列化给定的key,被返回被序列化的值。
Key 命令总结
梳理一下Redis中的key相关的命令:
- 过期时间有关系的有:
Expire
,Pexpire
,ExpireAt
,PExipreAt
,TTL
,PTTL
和Persist
。 - 重命名的:
Rename
和RenameNx
- 是否存在的:
Exists
- 随机返回的:
RandomKey
- 查询列举的:
Keys
,Type
- 移动删除的:
Move
,Del
- 序列化的:
Dump
最终梳理完了key相关的这几个命令,发现其实这几个命令也不是很难理解。更深入的时候和体验,需要我们慢慢在使用中体会和挖掘。
希望可以得到大家的关注和支持!!!