从C++到JSON,存入redis数据库再逆序列化为JAVA。

    xiaoxiao2026-06-09  2

    目录

    目录 一 基本原理 1原理图 二 从C序列化到JSON存入redis 1环境清单2开始工作3 总结归纳三 从redis取出逆序列化为JAVA四 声明

    一 、基本原理.

    1.1原理图

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

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

    1.1环境清单

    linuxgccredis + hiredis(lib)cmake、makecodeblocks(或者其他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

    *参考文献:见上述官网。

    相关资源:python入门教程(PDF版)
    最新回复(0)