文章目录
- 01 exists
- 02 type
- 03 keys
- 04 rename
- 05 renamenx
- 06 randomkey
- 07 ttl/pttl
- 08 expire/pexpire
- 09 persist
- 10 move
- 11 del
- 12 flushall
- 13 flushdb
01 exists
判断单个或多个key是否存在,返回结果要么是0要么是正整数,0表示都不存在,正整数是几就表示存在几个。
## 创建key1和key2键,其value是string数据类型
172.16.1.21:6379> set key1 "1"
OK
172.16.1.21:6379> set key11 "11"
OK
## 判断单个键,判断key1键是否存在
172.16.1.21:6379> exists key1
(integer) 1
## 判断多个键,判断key1和key11键是否存在
172.16.1.21:6379> exists key1 key11
(integer) 2
## 判断多个键,判断key0和key1键是否存在
172.16.1.21:6379> exists key0 key1
(integer) 1
02 type
判断key对应的value是什么数据类型,注意:只能判断单个key对应value的数据类型
## 创建key2键,value是string数据类型
172.16.1.21:6379> set key2 "2"
OK
## 创建key22键,value是list数据类型
172.16.1.21:6379> rpush key22 chenliang lili
(integer) 2
## 判断key2和key22键对应value的数据类型
172.16.1.21:6379> type key2
string
172.16.1.21:6379> type key22
list
172.16.1.21:6379> type key2 key22 <== 同时判断多个key对应的value报错
(error) ERR wrong number of arguments for 'type' command
03 keys
查看当前所在库的所有键(key)或者通过匹配获取相应的键(key);
#### 匹配格式
keys * # 列出当前所处库下的所有键(key)
keys k* # 列出当前所处库下以k开头的键(key)
keys h?llo # 列出当前所处库下以h开头,llo结尾,中间任意一个字符的键(key)
keys h[ae]llo # 列出当前所处库下hallo和hello键(key)
#### 求例
172.16.1.21:6379> keys * # 匹配所有的键
1) "key22"
2) "key11"
3) "key1"
4) "key2"
172.16.1.21:6379> keys k* # 匹配以k开头的键
1) "key22"
2) "key11"
3) "key1"
4) "key2"
172.16.1.21:6379> keys key?2 # 匹配出以key开头,2结尾,中间任意一个字符的键
1) "key22"
172.16.1.21:6379> keys key[12] # 匹配出key1和key2键
1) "key1"
2) "key2"
04 rename
为键(key)进行重命名,一次只能对单个键(key)进行重命名,格式:rename key newkey
在设置newkey时,要判断newkey是否存在,不存在时才用rename来重命名
## 创建键key4,数据类型为string
172.16.1.21:6379> set key4 "4"
OK
## 将键key4重命名为key44
172.16.1.21:6379> exists key44 # 判断key44键是否存在,一定要不存在哈
(integer) 0
172.16.1.21:6379> rename key4 key44 # 将key4重命名为key44
OK
172.16.1.21:6379> get key44 # 查看key44键对应的value
"4"
172.16.1.21:6379> exists key4 # 判断key4是否存在
(integer) 0
05 renamenx
为键(key)进行重命名,一次只能对单个键(key)进行重命名,格式:renamenx key newkey
在设置newkey时,不需要判断newkey是否存在,因为若newkey存在,那么renamenx是不
会成功的
### 创建key5和key55
172.16.1.21:6379> set key5 "5"
OK
172.16.1.21:6379> set key55 "55"
OK
172.16.1.21:6379> get key5
"5"
172.16.1.21:6379> get key55
"55"
## 将key5键重命名成key55看是否成功,答案是不会成功的
172.16.1.21:6379> renamenx key5 key55 # 将key5重命名为key55,不成功,结果返回0
(integer) 0
172.16.1.21:6379> get key55 # key55键的value还是55
"55"
172.16.1.21:6379> get key5 # key5键还是存在的,值也是
"5"
06 randomkey
随机获取一个键(键),不是说随机获取一个key对应的value哈,也不会把键(key)给删除了;
172.16.1.21:6379> randomkey # 随机获取一个键,结果是key1键
"key1"
172.16.1.21:6379> exists key1 # 判断key1键是否存在,结果是存在的
(integer) 1
172.16.1.21:6379> randomkey # 随机获取一个键,结果是key2键
"key2"
172.16.1.21:6379> exists key2 # 判断key2键是否存在,结果是存在的
(integer) 1
07 ttl/pttl
返回key剩余的生存时(你要知道key是可以设置过期时间的哈)
只要key没有设置过期时间,不管用ttl还是pttl查看,返回的结果都是-1
ttl的单位是秒,pttl的单位是毫秒
### 添加key7键
172.16.1.21:6379> set key7 "7"
OK
172.16.1.21:6379> get key7
"7"
## 查看key7键还有多少生存时间
172.16.1.21:6379> ttl key7 # 用ttl命令查看key7键还剩多少秒过期
(integer) -1 <== -1表示key7没有过期时间
172.16.1.21:6379> pttl key7 # 用pttl命令查看key7键还剩多少毫秒过期
(integer) -1 <== -1表示key7没有过期时间
## 为key7设置生存时间为60秒,
172.16.1.21:6379> expire key7 60
(integer) 1
## 查看key7键还剩余多少时间过期
172.16.1.21:6379> ttl key7 # ttl查看key7键还剩余54秒过期
(integer) 54
172.16.1.21:6379> ttl key7 # ttl查看key7还剩余52秒过期
(integer) 52
172.16.1.21:6379> pttl key7 # pttl查看key7还剩余11590毫秒过期
(integer) 11590
## 当key过期后,key就会不存在[这里等待60秒]
172.16.1.21:6379> exists key7 # 判断key7是否存在
(integer) 0 <== 0表示不存在
08 expire/pexpire
expire是以秒为单位为key设置过期时间;pexpire是以毫秒为单位为key设置过期时间;
## 添加key8和key88两个键(key)
172.16.1.21:6379> set key8 "8"
OK
172.16.1.21:6379> set key88 "88"
OK
172.16.1.21:6379> ttl key8 # 判断key8键还有多少秒过期,-1表示没有过期时间
(integer) -1
172.16.1.21:6379> ttl key88 # 判断key8键还有多少秒过期,-1表示没有过期时间
(integer) -1
## 设置key8键在60秒后过期
172.16.1.21:6379> expire key8 60 # 设置key8键在60秒后过期
(integer) 1
172.16.1.21:6379> ttl key8 # 查看key8键还有多少秒过期
(integer) 57
172.16.1.21:6379> ttl key8 # 查看key8键还有多少秒过期
(integer) 56
## 设置key88在60000毫秒(60秒)后过期
172.16.1.21:6379> pexpire key88 60000 # 设置key88键在60000毫秒后过期
(integer) 1
172.16.1.21:6379> pttl key88 # 查看key88键还剩多少毫秒过期
(integer) 57310
172.16.1.21:6379> pttl key88 # 查看key88键还剩多少毫秒过期
(integer) 55894
09 persist
移除key的过期时间,这样key就不会自动过期
172.16.1.21:6379> set key9 "9" # 添加key9键
OK
172.16.1.21:6379> expire key9 60 # 设置key9键60秒后过期
(integer) 1
172.16.1.21:6379> ttl key9 # 查看key9键还剩余多少秒过期
(integer) 57
172.16.1.21:6379> ttl key9 # 查看key9键还剩余多少秒过期
(integer) 56
172.16.1.21:6379> persist key9 # 移除key9键的过期时间
(integer) 1
172.16.1.21:6379> ttl key9 # 查看key9键还有多少过期,-1表示没有过期时间
(integer) -1
172.16.1.21:6379> get key9 # 查看key9对应的value
"9"
10 move
移除当前库下的单个key到其它库下,格式:move key db
## 在0号库下添加key10键
172.16.1.21:6379> # 当前是在0号库下哈
172.16.1.21:6379> set key10 "10" # 添加key10键
OK
172.16.1.21:6379> get key10 # 查看key10对应的value
"10"
## 在0号库下将key10移动2号库下
172.16.1.21:6379> move key10 2 # 在0号库下将key10移动2号库下
(integer) 1
172.16.1.21:6379> exists key10 # 在0号库下判断key10是否存在,显然不存在
(integer) 0
## 切换到2号库下去,查看key10是否存在
172.16.1.21:6379> select 2 # 切换至2号库下
OK
172.16.1.21:6379[2]> exists key10 # 在2号库下判断key10键是否存在
(integer) 1
172.16.1.21:6379[2]> get key10 # 在2号库下查看key10对应的value
"10"
11 del
删除单个key或多个key,key和key之间用空格分隔,返回值要么是0,要么是正整数,0表示key不存在,正整数是几就表示删除了几。格式:del key [key …]
## 添加key11、key111、key1111
172.16.1.21:6379> set key11 "11"
OK
172.16.1.21:6379> set key111 "111"
OK
172.16.1.21:6379> set key1111 "1111"
OK
## 删除单个key(这里删除key11)
172.16.1.21:6379> del key11
(integer) 1
172.16.1.21:6379> exists key11
(integer) 0
## 删除多个key(这里删除key12 key111 key1111,key12是不存在的哈)
172.16.1.21:6379> exists key12 # 判断key12键是否存在,是不存在的哈
(integer) 0
172.16.1.21:6379> del key12 key111 key1111 # 删除key12 key111 key111这三个键
(integer) 2 <== 表示成功删除了两个key
172.16.1.21:6379> exists key111 key1111 # 判断key111和key1111是否存在
(integer) 0
12 flushall
该命令非常危险,生产中应该给其做别名或者禁用。它的作用是清除掉redis实例中所有库下的所有数据(key-value对)。
## 查看0号库下有多少个key
172.16.1.21:6379> dbsize # 统计当前0号库下有多少个key
(integer) 7
## 查看2号库下有多少个key(前面有移动key到2号库下)
172.16.1.21:6379> select 2 # 切换至2号库下
OK
172.16.1.21:6379[2]> dbsize # 统计当前2号库下有几个key
(integer) 1
## 在2号库下执行flushall命令,然后看看结果
172.16.1.21:6379[2]> FLUSHALL # 在2号库下执行flushall命令
OK
172.16.1.21:6379[2]> dbsize # 在2号库下统计当前库下有多少个key
(integer) 0
172.16.1.21:6379[2]> select 0 # 切换至0号库下
OK
172.16.1.21:6379> dbsize # 在0号库下统计当前库下有多少个key
(integer) 0
13 flushdb
该命令也非常危险,它相比flushall命令的威力小一些,它是将当前所在的库下所有key给清除掉。其实也危险。生产中应该给其做别名或者禁用。
## 在0号库下添加一个key
172.16.1.21:6379> set key0 "0"
OK
172.16.1.21:6379> get key0
"0"
## 切换至1号库下添加一个key
172.16.1.21:6379[1]> set key1 "1"
OK
172.16.1.21:6379[1]> get key1
"1"
## 在1号库下执行flushdb命令
172.16.1.21:6379[1]> flushdb
OK
172.16.1.21:6379[1]> keys * # 查看1号库下的所有key,结果是没有
(empty list or set)
172.16.1.21:6379[1]> select 0 # 切换至0号库下
OK
172.16.1.21:6379> keys * # 查看0号库下的所有key
1) "key0"