标签:存储 redisCommand 二进制 value 20 char hiredis reply x00
hiredis存储二进制文件,比如char数组的方法,例如:
char value[20]={0}
value[0]='a'
value[15]='b'
这种情况直接调用redisCommand(c, "set key %s",value),是不可行的,因为遇到结束符'\0'会停止,但redis是二进制安全的,hiredis也提供了二进制安全的方法,即redisCommand(c, "set key %b",value,20),一个%b对应一个char指针加缓存的长度,下面给出完整代码:
#include <stdio.h> #include <string.h> #include "hiredis.h" int main() { redisContext *c = redisConnect("127.0.0.1", 9600); redisReply *reply = (redisReply *)redisCommand(c, "AUTH %s", "123456"); char value[20]={0}; value[0]='a'; value[19]='b'; reply = redisCommand(c, "set %b %b", "keyb",(size_t) 4,value,(size_t) 20); reply = redisCommand(c, "get keyb"); for(int i=0;i<reply->len;i++) { if(*(reply->str+i)==0) printf("\\x00"); else printf("%c",*(reply->str+i)); } print("\n") freeReplyObject(reply); redisFree(c); return 0; }
输出结果:
a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00b
标签:存储,redisCommand,二进制,value,20,char,hiredis,reply,x00 来源: https://www.cnblogs.com/lidabo/p/16673600.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。