1.5 执行命令
Redis服务器通过接收客户端发送的命令请求来执行指定的命令,并在命令执行完毕之后通过响应将命令的执行结果返回给客户端,如图1-2所示,结果中的内容称为命令回复。
图1-2 命令请求与响应
Redis为每种数据结构和功能特性都提供了相应的命令,掌握如何使用这些命令是学习Redis的重中之重。幸运的是,大部分Redis命令都非常简单,只需要给出少量参数就可以完成非常强大的操作。
Redis的所有命令都由一个命令名后跟任意多个参数以及可选项组成:
COMMAND [arg1 arg2 arg3 ...] [[OPTION1 value1] [OPTION2 value2] [...]]
在本书中,命令和可选项的名字通常以大写字母形式出现,命令参数和可选项的值则以小写字母形式出现。比如上例中的COMMAND就是命令的名字,OPTION1和OPTION2是可选项的名字,arg1、arg2和arg3是命令的参数,value1和value2是可选项的值。
命令描述中的方括号“[]”仅用于包围命令中可选的参数和选项,在执行命令的时候并不需要给出这些方括号。命令描述中的“...”用于表示命令接受任意数量的参数或可选项。
关于Redis命令格式的描述已经足够多了,现在让我们来看一个实际的例子。Redis的PING命令接受一条可选的消息作为参数,这个命令通常用于测试客户端和服务器之间的连接是否正常:
PING [message]
如果用户以无参数形式执行这个命令,那么服务器在连接正常的情况下,将向客户端返回PONG作为回复:
127.0.0.1:6379> PING PONG
但是,如果用户给定了可选的消息,那么服务器将原封不动地向客户端返回该消息:
127.0.0.1:6379> PING "hello world" "hello world"
另外,如果服务器与客户端的连接不正常,那么客户端将返回一个错误:
-- 客户端未能连接服务器,返回一个连接错误
127.0.0.1:6379> PING
Could not connect to Redis at 127.0.0.1:6379: Connection refused
我们为这个命令调用添加了一条注释,用于说明客户端遇到的问题。在本书中,redis-cli客户端的命令执行示例都使用“--”作为注释前缀,这些注释仅用于对被执行的命令做进一步的说明,并不是被执行命令的一部分。图1-3中给出了在redis-cli中执行Redis命令的示意图。
图1-3 在redis-cli中执行Redis命令