Как использовать Redis в рамках программы C ++?
Вопрос
Что было бы лучшим способом использования Redis DB в программе C ++?
Решение
С помощью C Привязки библиотека? Кажется, что нигде не доступен обертка C ++.
Другие советы
Я развесил фикаторный клиент Redis-CPLUSPLUS-клиента, сделал его совместимым с Redis-Server V2.0, добавил отсутствующие вызовы API и внедрены последовательное хеширование. Существует также раннее состояние классов высокого уровня, которые будут использоваться как типы STL в ближайшем будущем (Shared_String, Shared_int, Shared_set, ...). Ничто не готово к производству, но предоставленные тесты успешно работают :-)
https://github.com/brianwatling/redispp.
Я только что выпустил свой клиент C ++ Redis на Github. Это главная особенность прямо сейчас является трубопроводом, я буду добавлять больше функций в ближайшее время, возможно, кашию / последовательное перемешивание рядом.
Официальный список клиентов C ++
Исследуйте А. Полный список из Redis C ++ клиенты на Redis.io. Отказ Вы найдете там разные клиенты на основе Boost, Qt и т. Д. Обратите внимание, что в это время ни один из реализаций клиента C ++ не помечается как «рекомендуется». Но есть рекомендуемый C-клиент, HIRYIS, что должно работать просто в C ++.
http://github.com/fictorial/redis-cplusplus-client.
Эта клиентская библиотека C ++ не поддерживается, однако немногие люди на самом деле используют C ++ для связи с Redis.
https://github.com/petrohi/hiredispp.
Также проверьте hyregiSpp. Он далеко не завершен, но очень упрощенная реализация, которая охватывает CARY CARY HIRYIS. HIRYIS позаботится о протоколе низкого уровня и сетевых вещей, в то время как HearmiSpp Wrappers просто делают его C ++ дружелюбным.
Я написал клиент C ++ Redis: redis-plus-plus. Отказ Это основано на HIRYIS, и написано в C ++ 11. Он поддерживает следующие функции:
- Большинство команд для Redis.
- Пул соединения.
- Redis Scripting.
- Резьба безопасна, если не указано иное.
- Redis Опубликовать / Подписаться.
- Редис-трубопровод.
- Redis Transaction.
- Redis Cluster.
- Redis Sentinel.
- Redis Stream.
- STL-подобный интерфейс.
- Общий командный интерфейс.
Это очень быстро и легко в использовании. Если у вас есть какие-либо проблемы с этим клиентом, не стесняйтесь дайте мне знать. Отказ Если вам это нравится, также не стесняйтесь звезда это :)
#include <sw/redis++/redis++.h>
using namespace sw::redis;
try {
Redis redis("tcp://127.0.0.1:6379");
redis.set("key", "val");
auto val = redis.get("key");
if (val) {
// dereference val to get the value of string type.
std::cout << *val << std::endl;
} // else key doesn't exist.
redis.rpush("list", {"a", "b", "c"});
std::vector<std::string> list;
redis.lrange("list", 0, -1, std::back_inserter(list));
// put a vector<string> to Redis list.
redis.rpush("another-list", list.begin(), list.end());
auto tx = redis.transaction();
auto tx_replies = tx.incr("num0")
.incr("num1")
.mget({"num0", "num1"})
.exec();
auto redis_cluster = RedisCluster("tcp://127.0.0.1:7000");
// RedisCluster has similar interface as Redis.
redis_cluster.set("key", "value");
val = redis_cluster.get("key");
} catch (const Error &err) {
// error handling.
}
Проверить док для деталей.
Еще один клиент C ++ можно найти здесь: https://github.com/luca3m/redis3m.
Это обертка Hiredis, с хорошими классами C ++, объединение подключения к высокой доступности и набор шаблонов, уже реализованных и готовых к использованию.
Если вы заботитесь о производительности, попробуйте для Бредис. Отказ Используется C ++ 14 и boost::asio
и не имеет других зависимостей (то есть нет hiredis
ни libev
так далее.). Его использование может быть не так удобно, как и другие библиотеки C ++, но это было компенсировано дизайном ради производительности и максимальной гибкости.
Бредис гораздо легче использовать в Windows, так как у него нет hiredis
зависимость.