Build an application using C++
This page documents the preview (v2.21) version. Preview includes features under active development and is for development and testing only. For production, use the stable (v2024.1) version.
Prerequisites
The tutorial assumes that you have:
- installed YugabyteDB, created a universe, and are able to interact with it using the Redis shell. If not, follow the steps in Quick start.
- have C++ 11 or later.
Install the Redis C++ driver
We use the cpp_redis driver. To install the library do the following:
- Clone the
cpp_redisrepository
$ git clone https://github.com/Cylix/cpp_redis.git
- Get the networking module (tacopie)
$ cd cpp_redis
$ git submodule init && git submodule update
- Create a build directory and move into it
$ mkdir build && cd build
- Generate the Makefile using CMake
$ cmake .. -DCMAKE_BUILD_TYPE=Release
- Build and install the library
$ make
$ make install
Write the HelloWorld C++ application
Create a file ybredis_hello_world.cpp and copy the contents below:
#include <cpp_redis/cpp_redis>
#include<iostream>
#include<vector>
#include<string>
#include<utility>
using namespace std;
int main() {
cpp_redis::client client;
client.connect("127.0.0.1", 6379, [](const std::string& host, std::size_t port, cpp_redis::client::connect_state status) {
if (status == cpp_redis::client::connect_state::dropped) {
std::cout << "client disconnected from " << host << ":" << port << std::endl;
}
});
string userid = "1";
vector<pair<string, string>> userProfile;
userProfile.push_back(make_pair("name", "John"));
userProfile.push_back(make_pair("age", "35"));
userProfile.push_back(make_pair("language", "Redis"));
// Insert the data
client.hmset(userid, userProfile, [](cpp_redis::reply& reply) {
cout<< "HMSET returned " << reply << ": id=1, name=John, age=35, language=Redis" << endl;
});
// Query the data
client.hgetall(userid, [](cpp_redis::reply& reply) {
std::vector<cpp_redis::reply> retVal;
if (reply.is_array()) {
retVal = reply.as_array();
}
cout << "Query result:" <<endl;
for (int i = 0; i < retVal.size(); i=i+2) {
cout << retVal[i] << "=" <<retVal[i+1] << endl;
}
});
// synchronous commit, no timeout
client.sync_commit();
return 0;
}
Run the application
To compile the file, run the following command.
$ g++ -ltacopie -lcpp_redis -std=c++11 -o ybredis_hello_world ybredis_hello_world.cpp
To run the application, run the following command.
$ ./ybredis_hello_world
You should see the following output.
HMSET returned OK: id=1, name=John, age=35, language=Redis
Query result:
age=35
language=Redis
name=John