【Redis】基本命令
Redis命令行客户端
现在我们已经启动了Redis服务,下面将介绍如何使用redis - cli连接、操作Redis服务。客户端和服务端的交互过程如图1 - 3所示。
redis - cli可以使用两种方式连接Redis服务器。
- 第一种是交互式方式:通过
redis - cli -h {host} -p {port}
的方式连接到Redis服务,后续所有的操作都是通过交互式的方式实现,不需要再执行redis - cli了,例如:
redis - cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key hello
OK
127.0.0.1:6379> get key
"hello"
- 第二种是命令方式:用
redis - cli -h {host} -p {port} {command}
就可以直接得到命令的返回结果,例如:
redis-cli -h 127.0.0.1 -p 6379 ping
PONG
redis-cli -h 127.0.0.1 -p 6379 set key hello
OK
redis-cli -h 127.0.0.1 -p 6379 get key
"hello"
这里有两点要注意:
-
由于我们连接的Redis服务位于127.0.0.1,端口也使用的是默认的6379端口,所以可以省略 -h {host} -p {port}。
-
redis-cli
是学习Redis的重要工具,后续的大量章节都是用它来做讲解。
有关redis - cli
提供的更为强大的功能将在后续章节做详细介绍。
基本全局命令
Redis有5种数据结构,但它们都是键值对种的值,对于键来说有一些通用的命令。
KEYS
返回所有满足样式(pattern)的key。支持如下统配样式。
- h??llo 匹配 hello, hallo 和 hxllo
- h*llo 匹配 hllo 和 heeeello
- h[a e]llo 匹配 hello 和 hallo 但不匹配 hillo
- h[^e]llo 匹配 hallo, hbllo, …但不匹配 hello
- h[a - b]llo 匹配 hallo 和 hbllo
语法:
KEYS pattern
命令有效版本:1.0.0之后
时间复杂度:O(N)
返回值:匹配pattern的所有key。
示例:
1 redis> MSET firstname Jack lastname Stuntman age 35
2 "OK"
3 redis> KEYS *name*
4 1) "firstname"
5 2) "lastname"
6 redis> KEYS a??
7 1) "age"
8 redis> KEYS *
9 1) "age"
10 2) "firstname"
11 3) "lastname"
EXISTS
判断某个key是否存在。
语法:
EXISTS key [key ...]
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:key存在的个数。
示例:
1 redis> SET key1 "Hello"
2 "OK"
3 redis> EXISTS key1
4 (integer) 1
5 redis> EXISTS nosuchkey
6 (integer) 0
7 redis> SET key2 "World"
8 "OK"
9 redis> EXISTS key1 key2 nosuchkey
10 (integer) 2
DEL
删除指定的key。
语法:
DEL key [key ...]
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:删除掉的key的个数。
示例:
1 redis> SET key1 "Hello"
2 "OK"
3 redis> SET key2 "World"
4 "OK"
5 redis> DEL key1 key2 key3
6 (integer) 2
EXPIRE
为指定的key添加秒级的过期时间(Time To Live TTL)
语法:
EXPIRE key seconds
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:1表示设置成功。0表示设置失败。
示例:
1 redis> SET mykey "Hello"
2 "OK"
3 redis> EXPIRE mykey 10
4 (integer) 1
5 redis> TTL mykey
6 (integer) 10
TTL
获取指定key的过期时间,秒级。
语法:
TTL key
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:剩余过期时间。-1表示没有关联过期时间,-2表示key不存在。
示例:
1 redis> SET mykey "Hello"
2 "OK"
3 redis> EXPIRE mykey 10
4 (integer) 1
5 redis> TTL mykey
6 (integer) 10
💡 EXPIRE和TTL命令都有对应的支持毫秒为单位的版本:PEXPIRE和PTTL,详细用法就不再介绍了。
TYPE
返回key对应的的数据类型。
语法:
TYPE key
命令有效版本:1.0.0之后
时间复杂度:O(1)
返回值:none, string, list, set, zset, hash and stream.。
示例:
1 redis> SET key1 "value"
2 "OK"
3 redis> LPUSH key2 "value"
4 (integer) 1
5 redis> SADD key3 "value"
6 (integer) 1
7 redis> TYPE key1
8 "string"
9 redis> TYPE key2
10 "list"
11 redis> TYPE key3
12 "set"