كيفية استخدام redis داخل برنامج C ++؟
سؤال
ما هي أفضل طريقة لاستخدام Redis DB ضمن برنامج C ++؟
المحلول
باستخدام ج روابط مكتبة؟ لا يبدو أن هناك غلاف C ++ متاح في أي مكان.
نصائح أخرى
لقد تربطت بإعادة التهوية الفاتحة-Clestplus-Client ، مما جعلها متوافقة مع إعادة صياغة 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 الموصى به ، مستأجر, ، والتي يجب أن تعمل بشكل جيد في C ++.
http://github.com/fictorial/redis-cplusplus-client
لا يتم الحفاظ على مكتبة عميل C ++ هذه ، ولكن عدد قليل من الأشخاص يستخدمون C ++ بالفعل للتواصل مع Redis.
https://github.com/petrohi/hiredispp
تحقق أيضا من HiredIspp. إنه بعيدًا عن التنفيذ الكامل ، ولكنه التبسيط للغاية الذي يلف حول C على أساس C. يعتني Hiredis ببروتوكول وشبكات منخفضة المستوى ، بينما تجعل أغلفة HiredIspp فقط C ++ ودية.
لقد كتبت عميل C ++ Redis: redis زائد زائد. إنه يعتمد على مستأجر, ، وكتب في C ++ 11. وهو يدعم الميزات التالية:
- معظم الأوامر ل redis.
- تجمع الاتصال.
- redis البرمجة النصية.
- موضوع آمن ما لم ينص على خلاف ذلك.
- Redis نشر/اشتراك.
- خط أنابيب redis.
- معاملة REDIS.
- مجموعة Redis.
- ريديس سينتينيل.
- تيار redis.
- واجهة تشبه 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
الاعتماد.