Redis клиент для C++: подключение, установка и примеры использования

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Redis клиент для C++: обзор и практическое руководство

Redis — это высокопроизводительная in-memory база данных, широко используемая для кэширования, управления сессиями, очередей сообщений и real-time аналитики. Для взаимодействия с Redis на языке C++ существует несколько зрелых библиотек. В этой статье мы рассмотрим две наиболее популярные: hiredis (официальный C-клиент, легко интегрируемый в C++) и Redis++ (современный C++17 клиент с удобным синтаксисом). Вы узнаете, как установить, подключить и использовать эти инструменты в своих проектах.

1. Библиотека hiredis

hiredis — это минималистичный C-клиент, разработанный той же командой, что и Redis. Он лёгкий, быстрый и поддерживает синхронные и асинхронные запросы. Для C++ программистов hiredis служит отличной основой, так как её можно напрямую вызывать из C++ кода, оборачивая в RAII-объекты.

Установка hiredis

Установка hiredis выполняется через пакетный менеджер или сборку из исходников:

# Ubuntu/Debian
sudo apt-get install libhiredis-dev

# macOS (Homebrew)
brew install hiredis

# Сборка из исходников
git clone https://github.com/redis/hiredis.git
cd hiredis
make
sudo make install

Подключение и базовый пример

Для работы с hiredis необходимо подключить заголовочный файл и слинковаться с библиотекой. Ниже приведён пример подключения к Redis и выполнения простейших команд:

#include <iostream>
#include <hiredis/hiredis.h>

int main() {
    // Подключение к Redis на localhost:6379
    redisContext *c = redisConnect("127.0.0.1", 6379);
    if (c == nullptr || c->err) {
        std::cerr << "Ошибка подключения: " << c->errstr << std::endl;
        return 1;
    }

    // Отправка команды SET
    redisReply *reply = (redisReply*)redisCommand(c, "SET key1 Hello");
    if (reply->type == REDIS_REPLY_STATUS) {
        std::cout << "SET: " << reply->str << std::endl;
    }
    freeReplyObject(reply);

    // Отправка команды GET
    reply = (redisReply*)redisCommand(c, "GET key1");
    if (reply->type == REDIS_REPLY_STRING) {
        std::cout << "GET: " << reply->str << std::endl;
    }
    freeReplyObject(reply);

    // Освобождение ресурсов
    redisFree(c);
    return 0;
}

Компиляция выполняется с флагом -lhiredis:

g++ -o test test.cpp -lhiredis

2. Библиотека Redis++ (sw/redis++ / redox)

Redis++ (известная также как sw/redis++) — это современный C++17 клиент, который предоставляет типобезопасный интерфейс, поддержку пула соединений, транзакций, pipeline и Redis Cluster. Если вы предпочитаете писать на "чистом" C++ без C-стиля, Redis++ — идеальный выбор.

Установка Redis++

Установка осуществляется через vcpkg, Conan или сборку из исходников:

# Через vcpkg
vcpkg install redis-plus-plus

# Через Conan
conan install redis++/1.3.3@

# Сборка из исходников
git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plus
mkdir build && cd build
cmake ..
make
sudo make install

Пример использования Redis++

Библиотека использует объект Redis для работы с командами:

#include <iostream>
#include <sw/redis++/redis++.h>

int main() {
    try {
        // Создание клиента
        sw::redis::Redis redis("tcp://127.0.0.1:6379");

        // Установка значения
        redis.set("mykey", "Hello, Redis++!");

        // Получение значения
        auto val = redis.get("mykey");
        if (val) {
            std::cout << "GET: " << *val << std::endl;
        }

        // Работа с хэшами
        redis.hset("user:1", "name", "Alice");
        redis.hset("user:1", "age", "30");
        auto name = redis.hget("user:1", "name");
        std::cout << "User name: " << *name << std::endl;

        // Список: push и pop
        redis.lpush("mylist", "item1");
        redis.lpush("mylist", "item2");
        auto item = redis.r                    

Рекомендаций