Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

但对于整个数组的存储是不支持的,但是由于其支持存储字符串,我们可以把数组进行序列化,然后存储到redis中,读取时,再将其反序列化,可以得到原本的数组数据。

序列化工具采用boost库中的serialization。

#include <windows.h>
#include <iostream>
#include <sstream>
#include <string>
#include <boost\archive\xml_iarchive.hpp>
#include <boost\archive\xml_oarchive.hpp>
#include <boost\archive\binary_iarchive.hpp>
#include <boost\archive\binary_oarchive.hpp>
#include <boost\archive\text_iarchive.hpp>
#include <boost\archive\text_oarchive.hpp>
#include <boost\serialization\array.hpp>
#include <boost\array.hpp>
#include "hiredis\hiredis.h"
#include "CRedisClient.h"
using namespace std;
stringstream ss;int main()
{WSADATA wsaData;int nRet;if ((nRet = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0){std::cout << "WSAStartup failed" << std::endl;exit(0);}string data ;boost::array<float, 100> a;boost::array<float, 100> b;//float *a = new float[12800 * 20];//float *b = new float[12800 * 20];for (size_t i = 0; i < 100; i++){a[i] = i;}boost::archive::text_oarchive oa(ss);oa << boost::serialization::make_array(a.data(), a.size());data = ss.str();ss.str("");//将字符串流清空struct timeval tv;tv = {2,5000};redisContext* c = redisConnectWithTimeout("127.0.0.1", 6379, tv);if (c->err){std::cout << "Connect to redisServer failed: " << c->errstr << std::endl;redisFree(c);return 0;}redisReply* r = (redisReply*)redisCommand(c, "set test %s",data.c_str());if (NULL == r){std::cout << "Execut command1 failed" << std::endl;freeReplyObject(r);redisFree(c);return false;}if (!(r->type == REDIS_REPLY_STATUS && (strcmp(r->str, "OK") == 0 || strcmp(r->str, "ok") == 0))){std::cout << "Failed to execute command: "<< endl;freeReplyObject(r);redisFree(c);return false;}freeReplyObject(r);redisReply* reply = (redisReply*)redisCommand(c, "get test");if (NULL == r){cout<<"get test failed!"<<endl;}ss << reply->str;boost::archive::text_iarchive ia(ss);ia >> boost::serialization::make_array(b.data(), b.size());for (size_t i = 0; i < b.size(); i++){cout << b[i] << " ";}freeReplyObject(reply);redisFree(c);getchar();return 0;
}

运行结果:

redisServer中存储数据;

使用hiredis存储数组元素相关推荐

  1. 已知线性表最多可能有20个元素,存储每个元素需要8字节,存储每个指针需要4字节。当元素个数为( )时使用单链表比使用数组存储此线性表更加节约空间。

    已知线性表最多可能有20个元素,存储每个元素需要8字节,存储每个指针需要4字节.当元素个数为( 大于等于13 )时使用单链表比使用数组存储此线性表更加节约空间. 使用数组存储线性表需要提前分配好数组空 ...

  2. C++ 笔记(08)— 数组(数组的声明、初始化、访问及修改数组元素)

    数组具有如下特点: 数组是一系列元素: 数组中所有元素的类型都相同: 所有的数组都是由连续的内存位置组成.最低的地址对应第一个元素,最高的地址对应最后一个元素. 1. 一维数组 1.1 声明数组 要声 ...

  3. 【C语言】12-指向一维数组元素的指针

    本文目录 一.用指针指向一维数组的元素 二.用指针遍历数组元素 三.指针与数组的总结 四.数组.指针与函数参数 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...

  4. 如何在Bash中加入数组元素?

    如果我在Bash中有这样的数组: FOO=( a b c ) 如何用逗号将元素加入? 例如,产生a,b,c . #1楼 重复使用@无关紧要的解决方案,但是通过避免$ {:1}的替换和避免中间变量的使用 ...

  5. oracle数组元素所在key,oracle可变数组(VARRAY)

    一.可变数组的定义: 可变数组与嵌套表相似,也是一种集合.一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型.可变数组的大小由创建时决定.在表中建立可变数组后,可变数组在主表中作为一个列对 ...

  6. 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.

    数据结构大体成上可以分成两种: 1. 线性结构. 2. 非线性结构( 树,图) 1. 什么是线性结构        大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构... 2 ...

  7. C++ 对数组sizeof 和对数组元素sizeof

    这一段程序 下面这段程序很有看点: //arr1 is an array of intsint *source=arr1; size_t sz=sizeof(arr1)/sizeof(*arr1);/ ...

  8. 6-1 数组元素的区间删除

    6-1 数组元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: in ...

  9. 访问数组元素进行获取

    数组的访问 索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素. 格式: 数组名[索引] 数组的长度属性: ...

最新文章

  1. [YTU]_2638(编程题:多态--动物叫)
  2. java cuba_CUBA平台–新的Java企业应用程序框架
  3. “npm ERR! code ELIFECYCLE npm ERR! errno 1”问题
  4. python基础学习笔记4--抽象
  5. Vmware安装vmware-tools后,仍无法上网
  6. SSH三大框架的工作原理及流程
  7. 工欲善其事必先利其器——AWS认证是你最好的磨刀石
  8. 三维地图3DGIS平台技术指标要求规划
  9. BZOJ 1059 [ZJOI2007]矩阵游戏
  10. 用echarts写潮汐表,并处理后端传来的数据为潮汐表接口的数据
  11. 文心一言——何妨吟啸且徐行
  12. 电脑加一个固态硬盘,如何修改电脑的启动项。
  13. 最简单深度学习Python实现(二分类问题)
  14. 用python画哆啦a梦的头,用python画多来a梦-【Python】绘制哆啦A梦
  15. 二分法求多项式单根 — c语言
  16. Guava(一)RateLimter设计分析
  17. 常见几种在线即时通讯即时聊天在线客服的源代码
  18. SQL server查询「李」姓老师的数量
  19. 深孔直线度测量技术分享
  20. 如何给图片加水印?这几个给图片加水印的方法小白也能轻松学会

热门文章

  1. 泛微-前端JSP文件实现的后台查找
  2. UIT创新科完成四川天翼“全球眼”定制化存储
  3. 时间序列预测的8种常用方法简介
  4. Windows任务管理器参数解释
  5. app线上推广的四种主流方法
  6. android爬虫应用实战讲解 视频播放应用开发
  7. iPhone开发实战 pdf电子书
  8. “盗版软件的受害者”,我是这样解决的!
  9. 鸿蒙系统浏览器内核,四大浏览器横评出炉:Chromium 内核版 Edge 四项夺冠,优于原生 Chrome...
  10. Linux克隆Mac地址一样,详解Linux系统中网卡MAC地址克隆方法