आज हम @upstash/redis
. की घोषणा कर रहे हैं v1.0.0.
@upstash/redis
एकमात्र कनेक्शन रहित (HTTP आधारित) रेडिस क्लाइंट है जो सर्वर रहित और क्लाउडफ्लेयर वर्कर्स के साथ और तेजी से संगत के लिए डिज़ाइन किया गया है।
v1.0.0 में नया क्या है?
संस्करण 1.0.0 पिछली लाइब्रेरी का पूर्ण पुनर्लेखन है। हमें प्राप्त सबसे बड़े फीचर अनुरोधों में पाइपलाइन समर्थन और बेहतर प्रकार की सुरक्षा शामिल थे। इन नई सुविधाओं की प्रकृति के कारण v1
बैकवर्ड संगत नहीं है, हालांकि पुराना संस्करण काम करना जारी रखेगा क्योंकि अंतर्निहित REST API नहीं बदला है।
अधिकांश कमांड उसी सिंटैक्स का पालन करते हैं जिसका उपयोग आप रेडिस से करते हैं जैसे redis.setex("key", 2, "value")
. दूसरों के लिए, जैसे hset
हम आपको स्वयं करने के लिए आवश्यक (डी) क्रमांकन की मात्रा को कम करने के लिए एपीआई का उपयोग करने में आसान प्रदान करते हैं:
await redis.hset("123", {
id: "123",
name: { first: "andreas" },
});
इसे आंतरिक रूप से hset 123 id 123 name {"first":"andreas"}
पर क्रमबद्ध किया जाएगा और Upstash को भेज दिया। ध्यान दें कि वस्तुओं को स्वचालित रूप से क्रमबद्ध किया जाता है और अब आपको स्वयं ऐसा करने की आवश्यकता नहीं है।
यदि आप अनिश्चित हैं कि कमांड का उपयोग कैसे किया जा सकता है, तो टाइपस्क्रिप्ट आपकी मदद करेगा यदि आपका संपादक इंटेलिजेंस का समर्थन करता है। वह परीक्षण भी देखें जिसमें सब कुछ शामिल है और उदाहरण के रूप में काम कर सकता है।
यहां सबसे महत्वपूर्ण परिवर्तन हैं:
- स्पष्ट प्रमाणीकरण
- विभिन्न प्लेटफार्मों के लिए अनुकूलित (नोड.जेएस, क्लाउडफ्लेयर वर्कर्स और तेजी से)
- बेहतर प्रकार प्रणाली
- त्रुटियां डाली जाती हैं
- पाइपलाइन समर्थन
स्पष्ट प्रमाणीकरण
केवल विशिष्ट कार्यों को आयात करते समय स्वचालित प्रमाणीकरण के कारण समस्याएँ उत्पन्न होती हैं जहाँ वास्तविक व्यवहार अपेक्षा से भिन्न होता है और एक समस्या को डीबग करने में समय बर्बाद होता है जिसे रोका जा सकता था। विशेष रूप से विभिन्न प्लेटफार्मों पर जो पर्यावरण चर को अलग तरह से संभालते हैं। इसलिए हम चाहते हैं कि आप अपने क्लाइंट को स्पष्ट रूप से प्रमाणित करें।
हम समझते हैं कि अधिकांश उपयोग के मामलों के लिए आप उन्हें अपने वातावरण में संग्रहीत करेंगे और अपने Redis क्लाइंट को स्थापित करने के लिए केवल एक बार उनकी आवश्यकता होगी। @upstash/redis
यहां एक शॉर्टकट प्रदान करता है:आपको केवल UPSTASH_REDIS_REST_URL
सेट करना है और UPSTASH_REDIS_REST_TOKEN
पर्यावरण चर के रूप में और फिर उन्हें अपनी पसंद के परिनियोजन प्लेटफॉर्म पर लोड करें। यदि वे ठीक से कॉन्फ़िगर नहीं हैं, तो एक त्रुटि उत्पन्न होती है।
Node.js
import { Redis } from "@upstash/redis";
const redis = Redis.fromEnv();
क्लाउडफ्लेयर वर्कर्स
import { Redis } from "@upstash/redis/cloudflare";
const redis = Redis.fromEnv();
टाइपस्क्रिप्ट
नया संस्करण प्रत्येक कमांड के लिए सख्त प्रकारों का समर्थन करता है और यह सुनिश्चित करता है कि आपको बाद के बजाय जल्द ही गलतियाँ मिलें। प्रकार वैकल्पिक रूप से हैं और डिफ़ॉल्ट रूप से हम जहाँ संभव हो वहाँ प्रकार का अनुमान लगाते हैं।
import { Redis } from "@upstash/redis";
const redis = new Redis({
/* auth */
});
type User = {
id: string;
email: string;
};
const user = {
id: "abc",
email: "[email protected]",
};
await redis.set<User>("userKey", user);
const user = await redis.get<User>("userKey");
// -> user is typed as User
रेडिस वैकल्पिक तर्कों और संभावित रूप से विभिन्न संयोजनों के साथ कई आदेश प्रदान करता है। टाइपस्क्रिप्ट आपको कोड की एक पंक्ति निष्पादित करने से पहले किसी भी अमान्य संयोजन की जांच करने की अनुमति देता है।
redis.set("key", "value", {
ex: 60, // expire in 60 seconds
nx: true, // only create if the key does not yet exist
});
त्रुटि प्रबंधन
पिछले संस्करण ने कमोबेश Upstash HTTP API से कच्ची प्रतिक्रिया दी। इसके लिए आवश्यक है कि आप जाँच करें कि कहीं कोई त्रुटि तो नहीं है और फिर उसे फेंक देना चाहिए।
अब से, आदेश केवल डेटा लौटाते हैं और कुछ गलत होने पर स्वचालित रूप से फेंक देते हैं।
// `v0.2.1`
const { data, error } = await set("key", "value");
if (error) {
throw new Error(error);
}
// '^v1.0.0'
const data = await redis.set("key", "value");
पाइपलाइन
अपस्टैश HTTP पर रेडिस कमांड को एक साथ बैच अनुरोधों के लिए पाइपलाइनिंग प्रदान करता है और उन्हें थोक में भेजता है। यह आपके निष्पादन समय को कम कर सकता है और आपको कुछ पैसे बचा सकता है, खासकर सर्वर रहित कार्यों का उपयोग करते समय।
:::नोट पाइपलाइन का निष्पादन परमाणु नहीं है। भले ही पाइपलाइन में प्रत्येक आदेश क्रम में निष्पादित किया जाएगा, अन्य क्लाइंट द्वारा भेजे गए आदेश पाइपलाइन के साथ इंटरलीव कर सकते हैं।:::
आप अपने मौजूदा redis
. से एक नई पाइपलाइन बना सकते हैं उदाहरण।
import { Redis } from "@upstash/redis";
const redis = new Redis({
/* auth */
});
const p = redis.pipeline();
हमने कई कमांड की चेनिंग की अनुमति देने के लिए पाइपलाइन एपीआई डिज़ाइन किया है। अपनी पाइपलाइन में सभी कमांड जोड़ने के बाद, आप अनुरोध भेज सकते हैं और एक सरणी प्राप्त कर सकते हैं जहां प्रत्येक तत्व उसी क्रम में एक कमांड से मेल खाता है।
p.set("key", 2);
// or chain directly
p.incr("key").decrby("key", 2);
const res = await p.exec();
// res[0] => "OK" | the result of p.set("key", 2)
// res[1] => 3 | the result of p.incr("key")
// res[2] => 1 | the result of p.decrby("key", 2)
मैं कैसे आरंभ करूं?
कंसोल.upstash.com पर जाएं और एक नया डेटाबेस बनाएं। फिर क्विक-स्टार्ट गाइड में दिए गए निर्देशों का पालन करें
यदि आपने पहले पुराने संस्करण का उपयोग किया है, तो आप आरंभ करने के लिए GitHub पर माइग्रेट टू v1 अनुभाग देख सकते हैं।
भविष्य का कार्य
Upstash Redis को हाल ही में redis v6.2
. के साथ संगत होने के लिए एक अपडेट मिला है , जिसमें नए आदेश शामिल हैं और अन्य का विस्तार करता है। @upstash/redis
जल्द ही इनका समर्थन करेंगे।
एक अतिरिक्त मंच के रूप में, हम निकट भविष्य में डेनो का समर्थन करने की योजना बना रहे हैं।
समापन शब्द
यह एक बड़ा बदलाव है और इसे अपडेट करने के लिए आपको कुछ काम करने की आवश्यकता होगी। कृपया हमें अपना अनुभव बताएं।
अपस्टैश उत्पादों के साथ काम करते समय आपके अनुभव को बेहतर बनाने के लिए हम किसी भी प्रतिक्रिया का स्वागत करते हैं। बग्स के लिए गिटहब, डिस्कॉर्ड या ट्विटर पर पहुंचने में संकोच न करें या यदि आप योगदान करने में रुचि रखते हैं, तो एक सुविधा का अनुरोध करना चाहते हैं या सहायता की आवश्यकता है।