DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

 

posted on   DoubleLi  阅读(292)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2021-09-09 C++中的STL中map用法详解
2014-09-09 make报错:"/usr/bin/ld: cannot find -lXXX"
点击右上角即可分享
微信分享提示