记在redis 中遇到的空格问题,

在使用hset的时候,当键或值有空格的时候总是写不成功,如下封装的hmset方法:
int CRedisIntf::hash_mset(const string& key, const vector<string>& fields, const vector<string>& values)
{if (key.empty() || fields.empty() || values.empty()){return -1;}string strFormat = "HMSET " + key + " ";for (size_t i = 0; i < fields.size(); ++i){if (fields[i].empty()){return -1;}strFormat += fields[i] + " ";strFormat += values[i] + " ";}if (!_check_connect()){return -1;}mcgWriteLog("CRedisIntf::hash_mset %s",strFormat.c_str());redisAppendCommand(m_pRedis,strFormat.c_str());redisReply* reply = NULL;redisGetReply(m_pRedis,(void**)&reply);if (reply == NULL){redisFree(m_pRedis);m_pRedis = NULL;return -1;}if (reply->type == REDIS_REPLY_STATUS && strcmp(reply->str,"OK") == 0){freeReplyObject(reply);return 0;}else{freeReplyObject(reply);return -1;}
}

问题所在:

    strFormat += fields[i] + " ";strFormat += values[i] + " ";

redis提供的库,就是用空格来分隔参数的,如果一个字符串中本身带有一个空格,最后组装完成后这就等于两个参数,所以就会出现键和值数量不对应的关系,即使巧合对应了,但是肯定也不是我们期待的结果,

解决办法:
1. 替换,在调用hset方法前,将键或值中的空格替换成指定字符(如:" " --> "0x00" ),在读取的时候("0x00" -->" ")。
2.编码,其实和方法1类似 ( valuse = Base64Encode(args,valuse)) 
其实都是想办法去掉空格即可

redis 空格问题相关推荐

  1. redis中处理带有空格的key

    问题提出: 在redis中存的key有空格,存后空格会被取消掉,如图所示 String str = "2020-1-1 08"; stringRedisTemplate.opsFo ...

  2. Redis运行流程源码解析

    原文作者:@凡趣科技 pesiwang 原文地址:http://blog.nosqlfan.com/html/4007.html 本文分析源码基于 Redis 2.4.7 stable 版本. 概述 ...

  3. 阿里官方Redis开发规范!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:付磊 - 起扬 https://yq.aliyun.com/ ...

  4. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

  5. redis java 存储图片_Redis 存储图片 [base64/url/path]vs[object]

    一.base64图片编解码 基本流程:从网络获取下载一张图片.然后base64编码,再base64解码,存到本地E盘根文件夹下. import java.awt.image.BufferedImage ...

  6. 十五分钟介绍 Redis数据结构

    2019独角兽企业重金招聘Python工程师标准>>> 参考:http://blog.nosqlfan.com/html/3202.html?ref=rediszt 下面是一个对Re ...

  7. 使用Redis,你必须知道的21个注意要点

    前言 最近在学习Redis相关知识,看了阿里的redis开发规范,以及Redis开发与运维这本书.分使用规范.有坑的命令.项目实战操作.运维配置四个方向,整理了使用Redis的21个注意点,希望对大家 ...

  8. 阿里云 Redis 开发规范

    摘要:本文介绍了在使用阿里云Redis的开发规范,从键值设计.命令使用.客户端使用.相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题. 一.键值设计 1. key名设计 (1 ...

  9. [CentOS7]redis设置开机启动,设置密码

    简介 上篇文章介绍了如何安装redis,但每次重启服务器之后redis不会自启,这里将介绍如何进行自启设置,以及如何设置redis的密码,进行密码验证登陆. 上篇文章: Centos7安装Redis ...

最新文章

  1. Intro to Parallel Programming CUDA-第一单元
  2. php识别下载图片类型,php识别jpg图片exif信息中Photoshop格式 类型
  3. MySQL定义处理程序
  4. 趣谈设计模式 | 适配器模式(Adapter):如何让现存对象适用于新的环境?
  5. [Ext JS6实战] Ext.XTemplate
  6. 浅谈mtk平台手机通过gprs网络连接pc
  7. linux查看交换机配置命令大全,H3C交换机配置命令大全
  8. 退出matlab环境的命令行,实验一 MATLAB环境及命令窗口的使用
  9. python:实现牛顿法算法(附完整源码)
  10. java8的Effectively final
  11. 【吐血整理】CSDN上各个大厂网络安全岗面试题及个人模拟面试经验精选总结
  12. java实现文本纠错功能_调用百度API进行文本纠错
  13. 树莓派PICO问题一
  14. M2MQTT客户端MqttClient异常问题解决
  15. 人工智能第2章 智能 Agent
  16. Python学习:Python分析钉钉评论(一)爬取数据
  17. sql语句ding_Navicat写sql语句的具体方法步骤
  18. 总公司与分公司×××连接实现
  19. 关于win7不识别maxon驱动器的解决办法
  20. android elf 加固_Android so加固的简单脱壳

热门文章

  1. 关于cocos creator 2.0的废除cc.p接口Sorry, cc.p is deprecated. Please use cc.v2 instead
  2. 一劳永逸批量启动Jar包
  3. 电商app源码该如何布局流量模块(下)
  4. 2022-04-07 西安 javaSE(04) 方法可变参数、重载、递归,数组、冒泡排序、二分查找、动态操作,二维数组、jvm内存区域划分
  5. pcl计算点云法向量
  6. 关于influxdb的measurement(表)
  7. 似然函数、最大似然估计简单理解
  8. 用js函数判断一个数是否为素数
  9. vue + element 表格数据导出为excel表格
  10. 通过电气化来减少排放量 - 白皮书