redis的库简单安装使用参考:
C++操作Redis的简单例子_imxiangzi的博客-CSDN博客_c++ redis
以上为使用前了解信息,下面为正题内容;
在hash表中通过hgetall方法获取全部的key和value害怕之后影响效率!
想要通过hscan来通过游标分页获取,恭喜你,想的是对的,但是通过实测每次hscan给的数量和游标都没有效果,返回全部的数据!
这里通过查询得知,当hash表的数据小于一定量的时候(1023条,不一定正确),hscan模式返回的是全部数据的,返回的游标也是0;
想要预留的的话,可通过判断返回值的游标、返回type、返回数量来做自己的定制处理;
当返回游标为0时候,表示已经返回完数据了,type表REDIS_REPLY_ARRAY,表示返回的可以通过list获取数据,然后通过返回数据来控制下标获取数据即可!
c++示例:代码仅为参考,可能有误
if(REDIS_REPLY_ARRAY != this->_reply->type &&
2 == this->_reply->elements &&
this->_reply->element[1]->elements > 1) {
str_rt = this->_reply->element[1]->element[1]->str;
}
返回游标位置:this->_reply->element[0-->str
返回数据长度:this->_reply->element[1]->elements
获取key的字符串:this->_reply->element[1]-->str
获取value的字符串:this->_reply->element[1]->element[1]->str
如果对你有用,点赞 收藏 再走呗!

本文探讨了在C++中使用Redis的hscan命令来分页获取hash表中的大量数据时遇到的问题及解决办法。当hash表大小不超过特定阈值(约1023条记录)时,hscan会一次性返回所有数据而非分批返回。文章提供了检查返回游标、类型和数量的方法,并给出了C++示例代码。
3424

被折叠的 条评论
为什么被折叠?



