嵌入式_晚风 2023-11-30 14:16 采纳率: 100%
浏览 6
已结题

redis客户端问题!

问题描述:redis哈希类型中插入value为整型的数据

 
const char* field1[10] = {"ts","deviceId","envTemp","envHumidity","operTemp","operWindSpeed","workMode","startup","stop","faultState"};
 int value1[10] = {11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
//HSET 同时将多个field-value对设置到哈希表key中
void RedisTool::setAllHash(string& key,int num,const char** field,int value[])
{
    redisReply *reply;
    for(int i= 0 ;i < num;i++)
    {
        reply = (redisReply*)redisCommand(m_redis,"HSET %s %s %d",key.c_str(),field[i],value[i]);
        if(reply->type == REDIS_REPLY_ERROR)
        {
            //错误处理
            cout<<"an err occur"<<endl;
            abort();
        }
        freeReplyObject(reply);
    }
}
 

从redis客户端中查看插入结果为:

img


看到明显插入的值为整数,可结果显示的是字符串,这是为什么?

  • 写回答

2条回答 默认 最新

  • 梦回阑珊 2023-11-30 15:13
    关注

    回复不易,麻烦关注下博主,后面还有问题直接私信我,谢谢!!!

    在Redis中,哈希表(Hash)中的所有字段(field)和值(value)都是以字符串的形式存储的。无论你在插入整型数据时使用的是 %d 还是 %s 格式,Redis 都会将其转换为字符串存储。

    在你的代码中,虽然你使用了 %d 格式来格式化插入的整型数据,但是在Redis中,这些整型数据仍然会以字符串的形式存储在哈希表中。这是因为 Redis 不会自动将整型数据转换为二进制形式存储,而是将其转换为字符串,这样更灵活,能够适应更多的数据类型。

    如果你在哈希表中存储的值是整型,但你希望在 Redis 中仍然以整型形式存储,可以考虑使用 Redis 中的整型数据类型(例如,使用 SET key integer 命令)。但请注意,这可能会限制你在哈希表中存储的内容。如果你需要在哈希表中存储不同数据类型的值,那么字符串形式可能更为通用。

    总的来说,在哈希表中,字段和值都以字符串形式存储,但在应用程序层面你可以选择将值解析为相应的数据类型。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 11月30日

悬赏问题

  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL