C++プログラム内でRedisDBを使用するための最良の方法は何でしょうか?
Cバインディング ライブラリを使用していますか?どこでも利用できるC++ラッパーはないようです。
架空のredis-cplusplus-clientをフォークし、redis-server v2.0と互換性を持たせ、欠落しているapi呼び出しを追加し、コンシステントハッシュを実装しました。近い将来、stl型のように使用できる高レベルクラスの初期状態もあります(shared_string、shared_int、shared_setなど)。まだ本番環境に対応しているものはありませんが、提供されているテストは正常に実行されています:-)
https://github.com/brianwatling/redispp
Githubでc ++ redisクライアントをリリースしました。現在の主な機能はパイプラインです。まもなく機能を追加する予定です。次はシャーディング/コンシステントハッシュ法を使用する可能性があります。
C++クライアントの公式リスト
redis.io上のRedis C++クライアント の完全なリストを調べてください。ブースト、Qtなどに基づいて、さまざまなクライアントがあります。現時点では、C++クライアントの実装のいずれも「推奨」としてマークされていないことに注意してください。ただし、推奨されるCクライアント hiredis があり、C++では問題なく動作するはずです。
http://github.com/fictorial/redis-cplusplus-client
ただし、実際にC++を使用してRedisと通信する人はほとんどいないため、このC++クライアントライブラリは維持されていません。
私はC++ Redisクライアントを作成しました: redis-plus-plus 。これはhiredisに基づいており、C++ 11で記述されています。次の機能をサポートします。
非常に高速で使いやすいです。このクライアントで問題が発生した場合は、お気軽に お知らせください 。よろしければ、お気軽に star it :)
#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.
}
詳細については、 doc を確認してください。
https://github.com/petrohi/hiredispp
また、hiredisppもチェックしてください。これは完全にはほど遠いですが、Cベースのhiredisをラップする非常に単純な実装です。 Hiredisは低レベルのプロトコルとネットワーク関連のものを処理しますが、hiredisppラッパーはC++に対応します。
別のC++クライアントはここにあります: https://github.com/luca3m/redis3m
これはhiredisのラッパーであり、Nice C++クラス、高可用性接続プール、および実装済みですぐに使用できる一連のパターンを備えています。