RESP & JavaScript
将 RESP 与 JavaScript 相互转换
| Redis 开源 | Redis Enterprise Software | Redis Cloud | Redis 开源 | Redis Enterprise for Kubernetes | 客户端 |
|---|
当使用 client.call API 在函数中运行 Redis 命令时,回复会被解析为 resp3 回复并使用以下规则转换为 JS 对象
| resp 3 | JS 对象类型 |
|---|---|
状态 |
名为 __reply_type 且值为 status 的 StringObject(如果无法转换为 utf8,则为错误) |
批量字符串 |
JS String(如果无法转换为 utf8,则为错误) |
错误 |
引发 JS 异常 |
长整数 |
JS 大整数 |
双精度浮点数 |
JS 数字 |
数组 |
JS 数组 |
映射 |
JS 对象 |
集合 |
JS 集合 |
布尔值 |
JS 布尔值 |
大数字 |
名为 __reply_type 且值为 big_number 的 StringObject |
逐字字符串 |
具有 2 个附加字段的 StringObject:1. __reply_type 且值为 verbatim 2. __format,其中包含逐字字符串中的 ext 值(如果无法转换为 utf8,则为错误) |
空值 |
JS 空值 |
当使用 client.callRaw API 在函数中运行 Redis 命令时,回复会被解析为 resp3 回复并使用以下规则转换为 JS 对象
| resp 3 | JS 对象类型 |
|---|---|
状态 |
名为 __reply_type 且值为 status 的 JS ArrayBuffer |
批量字符串 |
JS ArrayBuffer |
错误 |
引发 JS 异常 |
长整数 |
JS 大整数 |
双精度浮点数 |
JS 数字 |
数组 |
JS 数组 |
映射 |
JS 对象 |
集合 |
JS 集合 |
布尔值 |
JS 布尔值 |
大数字 |
名为 __reply_type 且值为 big_number 的 StringObject |
逐字字符串 |
具有 2 个附加字段的 JS ArrayBuffer:1. __reply_type 且值为 verbatim 2. __format,其中包含逐字字符串中的 ext 值 |
空值 |
JS 空值 |
JavaScript 到 RESP 的转换
| JS 类型 | RESP2 | RESP3 |
|---|---|---|
字符串 |
批量字符串 |
批量字符串 |
具有字段 __reply_type=status 的 string 对象 |
状态 |
状态 |
| 异常 | 错误 |
错误 |
大整数 |
长整数 |
长整数 |
数字 |
批量字符串 |
双精度浮点数 |
数组 |
数组 |
数组 |
映射 |
数组 |
映射 |
集合 |
数组 |
集合 |
布尔值 |
长整数 |
布尔值 |
具有字段 __reply_type=varbatim 和 __format=txt 的 string 对象 |
批量字符串 |
格式为 txt 的 verbatim string |
空值 |
resp2 null |
resp3 null |