我们正在考虑将Redis作为大型数据集中间计算结果的缓存系统。例如,我们可能会处理一个1GB的文件,并将其转换为512MB的数据集,然后将其流式传输给客户端。问题在于,当我们从Redis请求数据时,我们不希望等到所有512MB的数据都发送到服务器后才开始将其发送给客户端。我已经查看了一些用于Redis的C和C ++库(如redox、redis3m),即使是异步的,它们似乎也只能在整个结果返回时给您回调,而不能在缓存返回部分结果时给您回调。是否有任何可以按缓冲区大小返回值的库?
更新:这是我希望得到的一种接口类型。示例仅用于澄清;
更新:这是我希望得到的一种接口类型。示例仅用于澄清;
Socket clientSocket;
/* some code that has accepted a connection from a client */
/* ....... */
RedisClient cl;
cl.Connect("server");
cl.GetValueAsync(
"largePreCalculated", // key
[clientSocket](char *buffer, int bytesAvailable) {
clientSocket.write(buffer, bytesAvailable);
}, // callback when data from the value has come over the wire
[clientSocket]() {
clientSocket.close();
} // callback when all data from value has been received
);