【发布时间】:2017-05-11 14:18:39
【问题描述】:
我正在使用 redis 存储位域数据,并在每个偏移量上设置一个 u4 值。
我需要在 Nodejs 服务器中获取缓冲区。
对于 0-7,redis 返回正确的缓冲区。
但是当设置 8-15 值时,它会返回一个奇怪的缓冲区。Uint8Array 视图进入缓冲区并显示 [239,191,189] 表示乱码。
这是复制运行的测试代码。
顺便说一句,响应缓冲区出现问题。尝试获取 #0 值是可以的。
const http = require('http');
const url = require('url');
const fs = require('fs');
const redis = require('redis'),
RDS_PORT = 6379,
RDS_HOST = '139.199.33.69',//139.199.33.69
RDS_OPTS = {detect_buffers: true},
client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS);
console.log('redis ready')
const canvas_name = 'canvas-bitfield';
client.del(canvas_name)
client.send_command("bitfield",[canvas_name,'SET','u4','#0',10,'OVERFLOW','FAIL'])
client.send_command('bitfield',[canvas_name,'GET','u4',0],redis.print) //reply:10
client.get(canvas_name,function(err, reply){
if(err){console.log(err)}
const buff = Buffer.from(reply.toString());
const view8 = new Uint8Array(buff);
console.log(view8) //Uint8Array(3) [239, 191, 189]
})
【问题讨论】:
-
这无关,但我还是要指出:send_command 是异步。因此,您应该使用回调参数来确保在 send_command 真正完成后执行任何后续命令:
client.send_command(command, args, callback)
标签: javascript node.js redis