RESP 常见格式
常见 Redis 命令及其 RESP 编码
1. SET
设置指定键的值。
-
命令格式:
*3 $3 SET $3 key $5 value -
解释:
*3表示接下来有 3 个元素。$3表示第一个元素是长度为 3 的字符串"SET"。$3表示第二个元素是长度为 3 的字符串"key".$5表示第三个元素是长度为 5 的字符串"value"。
2. GET
获取指定键的值。
-
命令格式:
*2 $3 GET $3 key -
解释:
*2表示接下来有 2 个元素。$3表示第一个元素是长度为 3 的字符串"GET".$3表示第二个元素是长度为 3 的字符串"key".
3. DEL
删除一个或多个键。
-
命令格式:
*3 $3 DEL $3 key1 $3 key2 -
解释:
*3表示接下来有 3 个元素。$3表示第一个元素是长度为 3 的字符串"DEL".$3表示第二个元素是长度为 3 的字符串"key1".$3表示第三个元素是长度为 3 的字符串"key2".
4. INCR
将键存储的数字值增加 1。
-
命令格式:
*2 $4 INCR $3 key -
解释:
*2表示接下来有 2 个元素。$4表示第一个元素是长度为 4 的字符串"INCR".$3表示第二个元素是长度为 3 的字符串"key".
5. DECR
将键存储的数字值减少 1。
-
命令格式:
*2 $4 DECR $3 key -
解释:
*2表示接下来有 2 个元素。$4表示第一个元素是长度为 4 的字符串"DECR".$3表示第二个元素是长度为 3 的字符串"key".
6. EXPIRE
设置键的过期时间(秒)。
-
命令格式:
*3 $7 EXPIRE $3 key $2 60 -
解释:
*3表示接下来有 3 个元素。$7表示第一个元素是长度为 7 的字符串"EXPIRE".$3表示第二个元素是长度为 3 的字符串"key".$2表示第三个元素是长度为 2 的字符串"60".
7. TTL
获取键的剩余生存时间(秒)。
-
命令格式:
*2 $3 TTL $3 key -
解释:
*2表示接下来有 2 个元素。$3表示第一个元素是长度为 3 的字符串"TTL".$3表示第二个元素是长度为 3 的字符串"key".
8. HSET
设置哈希表中字段的值。
-
命令格式:
*4 $4 HSET $3 hash $3 field $5 value -
解释:
*4表示接下来有 4 个元素。$4表示第一个元素是长度为 4 的字符串"HSET".$3表示第二个元素是长度为 3 的字符串"hash".$3表示第三个元素是长度为 3 的字符串"field".$5表示第四个元素是长度为 5 的字符串"value".
9. HGET
获取哈希表中字段的值。
-
命令格式:
*3 $4 HGET $3 hash $5 field -
解释:
*3表示接下来有 3 个元素。$4表示第一个元素是长度为 4 的字符串"HGET".$3表示第二个元素是长度为 3 的字符串"hash".$5表示第三个元素是长度为 5 的字符串"field".
10. LPUSH
将一个或多个值插入列表头部。
-
命令格式:
*3 $5 LPUSH $5 mylist $4 item -
解释:
*3表示接下来有 3 个元素。$5表示第一个元素是长度为 5 的字符串"LPUSH".$5表示第二个元素是长度为 5 的字符串"mylist".$4表示第三个元素是长度为 4 的字符串"item".
11. LRANGE
获取列表中指定范围的元素。
-
命令格式:
*4 $6 LRANGE $5 mylist $1 0 $1 1 -
解释:
*4表示接下来有 4 个元素。$6表示第一个元素是长度为 6 的字符串"LRANGE".$5表示第二个元素是长度为 5 的字符串"mylist".$1表示第三个元素是长度为 1 的字符串"0".$1表示第四个元素是长度为 1 的字符串"1".
测试与验证
你可以使用 redis-cli 来测试这些新实现的命令:
# 测试 DEL
redis-cli -p 6379 SET key1 "value1"
redis-cli -p 6379 SET key2 "value2"
redis-cli -p 6379 DEL key1 key2
# 测试 INCR 和 DECR
redis-cli -p 6379 SET counter 10
redis-cli -p 6379 INCR counter
redis-cli -p 6379 DECR counter
# 测试 EXPIRE 和 TTL
redis-cli -p 6379 SET tempKey "tempValue"
redis-cli -p 6379 EXPIRE tempKey 60
redis-cli -p 6379 TTL tempKey
# 测试 HSET 和 HGET
redis-cli -p 6379 HSET myhash field1 "Hello"
redis-cli -p 6379 HGET myhash field1
# 测试 LPUSH 和 LRANGE
redis-cli -p 6379 LPUSH mylist item1 item2 item3
redis-cli -p 6379 LRANGE mylist 0 2
通过这些测试命令,你可以验证你的服务器是否正确实现了这些 Redis 命令。如果有任何问题,请检查日志输出并进行相应的调试。