您的位置:首页 > 数据库 > Redis

Json数据:通过Redis数据库序列化转换C++端JAVA端。

2016-11-05 15:34 495 查看

目录

目录
一 、基本原理.
1.1原理图

二 、从C++序列化到JSON,存入redis.
1.1环境清单

1.2开始工作

1.3 总结归纳

三 、从redis取出,逆序列化为JAVA.

四 、声明

一 、基本原理.

1.1原理图

Created with Raphaël 2.1.2c++Json-Redis-Json Java

二 、从C++序列化到JSON,存入redis.

1.1环境清单

linux

gcc

redis + hiredis(lib)

cmake、make

codeblocks(或者其他IDE)

1.2开始工作

redis环境搭建

codeblocks(IDE)配置

rapidjson(C++ToJSON)下载

hiredis依赖配置 (为 5. 做准备)

SimpleRedisClient(toRedis)下载

最终成果

1.2.1 进入redis官网自行配置,或者移步redis入门教程有详细说明

1.2.2 进入codeblocks官网下载,或者在终端安装,完成之后新建一个项目备用

$ sudo apt-get install codeblocks

1.2.3 序列化我们用到的是rapidjson开源项目,当然也可以去JSON官网翻一翻其他开源项目来使用。下面的命令请在workspace里刚才项目的路径下键入

$ git clone https://github.com/miloyip/rapidjson.git

$ cd rapidjson

$ sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/local/include

$ make

$ make install

这有一个例子,倘若可以跑了,说明配置好了。

demo.cpp:

// rapidjson/example/simpledom/simpledom.cpp`
#include <string>
#include <stdlib.h>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>

using namespace rapidjson;

int main() {
// 1. Parse a JSON string into DOM.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);

// 2. Modify it by DOM.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);

// 3. Stringify the DOM
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);

// Output {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
return 0;
}


1.2.4 hiredis环境配置:直接在终端

$ sudo apt-get install libhiredis-dev

1.2.5 存到redis我们用到的是SimpleRedisClient,同样你也可以去redis客户端翻一翻其他开源项目来使用。下面的命令请在workspace里刚才项目的路径下键入

$ git clone https://github.com/Levhav/SimpleRedisClient.git

$ cd SimpleRedisClient

再进入到对应的redis版本的目录下,把SimpleRedisClient.h拷贝到 刚才demo.cpp同级的目录下。并且在codeblocks中把它导入到项目中。demo使命已经完成,移除demo.cpp(不然会有冲突)

1.2.6 最终成果

final.cpp:

#include "stdlib.h"
#include <stdio.h>
#include "/home/morpheus/CodeBlocks_workspqce/final/SimpleRedisClient.h"//注意路径
#include <iostream>
#include <string>
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"

using namespace std;
using namespace rapidjson;

int main(int argc, char *argv[])
{
//toJson
StringBuffer s;
Writer<StringBuffer> writer(s);

writer.StartObject();                       // Between StartObject()/EndObject()

writer.Key("name");                     // output a key,
writer.String("gaoyisheng");                // follow by a value.
writer.Key("age");
writer.Int(123);

writer.EndObject();             // Between StartObject()/EndObject(),

std::cout << s.GetString() << std::endl;

//toRedis
SimpleRedisClient rc;

rc.setHost("127.0.0.1");            //redis服务器端口
rc.setPort(6379);
rc.auth("");                        //改成你的   链接redis服务器的用户
rc.LogLevel(0);

if(!rc)
{
printf("Соединение с redis не установлено\n");//没有安装连接redis
return -1;
}

rc.getset("me",s.GetString());//set()方法同样适用,详见SimpleRedisClient代码

rc.redis_close();
}


1.3 总结归纳

1.3.1 倘若在局域网内通过redis传递,需将redis配置改为 bind 0.0.0.0 ,在final.cpp中将 127.0.0.1 改为 服务器地址。

1.3.2 倘若是下载解压的redis,需自行打开服务器。./redis-server

1.3.3 在导入项目时,需注意路径问题,文件最好放在codeblocks的workspace下!

三 、从redis取出,逆序列化为JAVA.

请移步我同窗的博客,已有详解。

http://blog.csdn.net/qq_33429968/article/details/53045336

四 、声明

小可不才,恭听指正。

*欢迎任何形式的转载,烦请注明装载,保留本段文字。

*本文原文链接 :http://blog.csdn.net/timo1160139211/article/details/53045715

*参考文献:见上述官网。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java redis json linux