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 命令。如果有任何问题,请检查日志输出并进行相应的调试。