- Redka का लक्ष्य Redis की खूबियों को SQLite के साथ फिर से लागू करना है, ताकि यह Redis API के साथ संगत रहे
- मुख्य विशेषताएँ:
- डेटा को RAM के आकार में फिट करना जरूरी नहीं
- ACID transactions का समर्थन
- SQL views के जरिए डेटा क्वेरी और reporting क्षमता बेहतर
- In-process (Go API) और Standalone (RESP) server दोनों का समर्थन
- Redis-संगत commands और protocol का समर्थन
- फिलहाल विकास जारी है, और support status व roadmap के लिए नीचे दिए गए दस्तावेज़ देखें
समर्थित commands
- Redka का लक्ष्य Redis के 5 मुख्य data types — String, List, Set, Hash, Sorted Set — का समर्थन करना है
- String, Hash, Key management, और transaction commands पहले से समर्थित हैं, जबकि List, Set, और Sorted Set विकास में हैं
- विस्तृत command सूची के लिए मूल लेख देखें
इंस्टॉलेशन
Standalone server
- Release page से अपने OS के अनुसार binary file डाउनलोड करके चलाएँ
- Docker का उपयोग करने पर
docker pull nalgeon/redka से image डाउनलोड करें
Go module
go get github.com/nalgeon/redka से module इंस्टॉल करें
- SQLite driver के रूप में
github.com/mattn/go-sqlite3 या modernc.org/sqlite का उपयोग करें
उपयोग का तरीका
Standalone server
- डाउनलोड की गई binary file को
redka [-h host] [-p port] [db-path] के रूप में चलाएँ
- डिफ़ॉल्ट मान हैं host
localhost, port 6379, और DB path नहीं होने पर (in-memory)
- Docker उपयोग करते समय
docker run command से चलाएँ। विस्तृत options के लिए मूल लेख देखें
- server चलने के बाद
redis-cli, redis-py, go-redis जैसे Redis-संगत clients से कनेक्ट किया जा सकता है
In-process server
redka.Open() function से DB object बनाएँ। driver import करना अनिवार्य है
redka.DB object के methods को कॉल करके विभिन्न commands चलाएँ
View (read-only) और Update (write-enabled) methods से transaction handling करें
Persistence
- Redka, SQLite database में
rkey, rstring, rhash tables का उपयोग करके डेटा स्टोर करता है
- हर data type के लिए views (
vstring, vhash आदि) के माध्यम से SQL से डेटा क्वेरी किया जा सकता है
Performance
redis-benchmark tool से Redis और Redka की performance की तुलना की गई
- Redka में SET लगभग 6 गुना और GET लगभग 2 गुना धीमा है
- फिर भी यह लगभग 23K writes/sec और 57K reads/sec स्तर की performance दिखाता है
- container में चलाने पर performance में कमी आ सकती है
Roadmap
- 1.0 release में Redis 2.x दौर की मुख्य सुविधाओं पर केंद्रित implementation की योजना है
- String, Hash, Key management, transaction support पूरा
- Sorted Set विकास में
- List, Set नियोजित
- भविष्य के versions में Stream, HyperLogLog, Geo जैसे data types और Pub/Sub फीचर जोड़ने की योजना है
- Lua scripting, authentication/ACL, multi DB, Watch/Unwatch आदि को लागू करने की योजना नहीं है
- cluster और sentinel फीचर्स भी लागू नहीं किए जाएँगे
GN⁺ की राय
- Redis के साथ बड़े पैमाने पर संगत रहते हुए persistence देने का Redka का तरीका दिलचस्प है। ACID transactions का समर्थन भी इसका एक मजबूत पक्ष लगता है।
- performance के मामले में यह Redis तक नहीं पहुँचता, लेकिन जहाँ persistence ज़रूरी हो वहाँ यह एक व्यवहारिक विकल्प हो सकता है।
- हालांकि यह अभी विकास के शुरुआती चरण में है, इसलिए stability को लेकर थोड़ा और देखना होगा, और roadmap में कई फीचर्स का न होना वास्तविक अपनाने के समय ध्यान देने योग्य है।
- In-memory उपयोग में यह शायद Redis को नहीं हरा पाएगा, लेकिन SQLite-आधारित persistence layer के रूप में यह उपयोगी साबित हो सकता है।
- आजकल edge computing environments में lightweight stack की मांग बढ़ रही है, और ऐसे क्षेत्रों में Redis की जगह Redka आज़माया जा सकता है।
2 टिप्पणियां
जब scheduler के साथ redis जोड़ना हो, तब यह काफ़ी काम का रहेगा, हाहा
Hacker News राय