C++ में कैशिंग: Redis, memcached, LevelDB और अन्य उपकरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में कैशिंग: Redis और अन्य लोकप्रिय उपकरण



उच्च-लोड वाले C++ अनुप्रयोगों में डेटा तक पहुँच की गति महत्वपूर्ण है। कैशिंग सर्वर प्रतिक्रिया समय को 10–100 गुना तक कम कर सकता है, डेटाबेस और बाहरी API पर लोड कम करता है। इस लेख में, हम C++ पर कैश के साथ काम करने के लिए मुख्य लाइब्रेरीज़ पर चर्चा करेंगे: क्लासिक Redis से लेकर एम्बेडेड इंजन LevelDB और RocksDB तक।



1. Redis और C++ के लिए क्लाइंट लाइब्रेरीज़



Redis सबसे लोकप्रिय in-memory key-value स्टोर है, जो जटिल डेटा संरचनाओं (सूचियाँ, सेट, हैश) का समर्थन करता है। C++ के लिए दो मुख्य क्लाइंट हैं:



  • hiredis — एक न्यूनतम C-लाइब्रेरी (आधिकारिक), जो रैपर के माध्यम से C++ में आसानी से एकीकृत होती है।
  • redis-plus-plus — एक आधुनिक C++17 लाइब्रेरी जिसमें Redis कमांड का पूर्ण कवरेज, कनेक्शन पूल, पाइपलाइन और ट्रांज़ैक्शन का समर्थन है।


hiredis के साथ उदाहरण (सिंक्रोनस)

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

int main() { redisContext *c = redisConnect("127.0.0.1", 6379); if (c == nullptr || c->err) { std::cerr << "कनेक्शन त्रुटि: " << c->errstr << std::endl; return 1; }

redisReply *reply = (redisReply*)redisCommand(c, "SET key hello"); freeReplyObject(reply);

reply = (redisReply*)redisCommand(c, "GET key"); if (reply->type == REDIS_REPLY_STRING) { std::cout << "GET key: " << reply->str << std::endl; } freeReplyObject(reply); redisFree(c); return 0;}


redis-plus-plus के साथ उदाहरण (एसिंक्रोनस + पूल)

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

int main() { sw::redis::Redis redis("tcp://127.0.0.1:6379");

// TTL के साथ सेट करें (5 सेकंड) redis.setex("user:42", 5, "John Doe");

// प्राप्त करें auto val = redis.get("user:42"); if (val) { std::cout << "कैश किया गया उपयोगकर्ता: " << *val << std::endl; } else { std::cout << "कुंजी समाप्त हो गई या नहीं मिली" << std::endl; } return 0;}


Redis के लाभ: उच्च गति (माइक्रोसेकंड), कमांड का समृद्ध सेट, प्रतिकृति, क्लस्टरिंग। नुकसान: रैम की खपत करता है, एक अलग सर्वर की आवश्यकता होती है।



2. Memcached और libmemcached



Memcached सबसे सरल वितरित कैश है, जो केवल रैम में डेटा संग्रहीत करता है। C++ के लिए libmemcached लाइब्रेरी (या इसका C++ रैपर libmemcachedutil) का उपयोग किया जाता है।



libmemcached के साथ उदाहरण

#include <libmemcached/memcached.h>#include <iostream>#include <cstring>

int main() { memcached_st *memc = memcached_create(nullptr); memcached_server_add(memc, "127.0.0.1", 11211);

const char *key = "session_token"; const char *value = "abc123"; memcached_return_t rc = memcached_set(memc, key, strlen(key), value, strlen(value), 0, 0); // 0 - बिना संपीड़न, 0 - TTL

if (rc == MEMCACHED_SUCCESS) { size_t value_length; uint32_t flags; char *result = memcached_get(memc, key, strlen(key), &value_length, &flags, &rc); if (rc == MEMCACHED_SUCCESS) { std::cout << "प्राप्त करें: " << result << std::endl; free(result); } } memcached_free(memc); return 0;}


Memcached कब चुनें: जब जटिल डेटा संरचनाओं के बिना सरल कैशिंग की आवश्यकता हो, और अधिकतम प्रदर्शन महत्वपूर्ण हो। Redis कार्यक्षमता में बेहतर है, Memcached सादगी में।



3. एम्बेडेड इंजन: LevelDB और RocksDB



यदि कैश स्थानीय होना चाहिए (<

अनुशंसाएँ