RESP 和 JavaScript
在 RESP 和 JavaScript 之间转换
使用 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 |
逐字字符串 |
StringObject ,带有 2 个附加字段:1. __reply_type ,值为 verbatim ;2. __format ,值为逐字字符串中的 ext(如果无法转换为 utf8,则为错误) |
空 |
JS null |
使用 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 |
逐字字符串 |
JS ArrayBuffer ,带有 2 个附加字段:1. __reply_type ,值为 verbatim ;2. __format ,值为逐字字符串中的 ext |
空 |
JS null |
JavaScript 到 RESP 的转换
JS 类型 | RESP2 | RESP3 |
---|---|---|
字符串 |
大块字符串 |
大块字符串 |
带有字段 __reply_type=status 的 string 对象 |
状态 |
状态 |
异常 | 错误 |
错误 |
大整数 |
长 |
长 |
数字 |
大块字符串 |
双 |
数组 |
数组 |
数组 |
映射 |
数组 |
映射 |
设置 |
数组 |
设置 |
布尔 |
长 |
布尔 |
带有字段 __reply_type=varbatim 和 __format=txt 的 string 对象 |
大块字符串 |
verbatim string 格式为 txt |
空 |
resp2 null |
resp3 null |