কম্পিউটার

Upstash Redis SDK v1.0.0 ঘোষণা করা হচ্ছে

আজ, আমরা @upstash/redis ঘোষণা করছি v1.0.0.

@upstash/redis একমাত্র সংযোগহীন (HTTP ভিত্তিক) রেডিস ক্লায়েন্ট যা সার্ভারবিহীন এবং ক্লাউডফ্লেয়ার কর্মীদের সাথে সামঞ্জস্যপূর্ণ এবং দ্রুততার জন্য ডিজাইন করা হয়েছে৷

v1.0.0-এ নতুন কী?

সংস্করণ 1.0.0 পূর্ববর্তী লাইব্রেরির একটি সম্পূর্ণ পুনর্লিখন। আমরা পাইপলাইন সমর্থন এবং উন্নত ধরনের নিরাপত্তার জন্য সবচেয়ে বড় বৈশিষ্ট্যের অনুরোধ পেয়েছি। এই নতুন বৈশিষ্ট্যগুলির প্রকৃতির কারণে v1 পিছনের দিকে সামঞ্জস্যপূর্ণ নয়, তবে অন্তর্নিহিত REST API পরিবর্তিত না হওয়ায় পুরানো সংস্করণটি কাজ করতে থাকবে৷

বেশিরভাগ কমান্ড একই সিনট্যাক্স অনুসরণ করে যা আপনি Redis থেকে ব্যবহার করেন যেমন redis.setex("key", 2, "value") . অন্যদের জন্য, যেমন hset আপনার নিজের করা প্রয়োজন (de)সিরিয়ালাইজেশনের পরিমাণ কমাতে আমরা API ব্যবহার করা সহজ অফার করি:

await redis.hset("123", {
  id: "123",
  name: { first: "andreas" },
});

এটি অভ্যন্তরীণভাবে hset 123 id 123 name {"first":"andreas"}-এ ক্রমিক করা হবে এবং Upstash এ পাঠানো হয়েছে। নোট করুন যে বস্তুগুলি স্বয়ংক্রিয়ভাবে ক্রমিক করা হয় এবং আপনাকে আর এটি নিজে করতে হবে না৷

আপনি যদি নিশ্চিত না হন যে কিভাবে একটি কমান্ড ব্যবহার করা যেতে পারে, তাহলে টাইপস্ক্রিপ্ট আপনাকে সাহায্য করবে যদি আপনার সম্পাদক বুদ্ধিমত্তা সমর্থন করে। এছাড়াও পরীক্ষাটি দেখুন যা সবকিছুকে কভার করে এবং উদাহরণ হিসাবে পরিবেশন করতে পারে।

এখানে সবচেয়ে গুরুত্বপূর্ণ পরিবর্তনগুলি রয়েছে:

  • স্পষ্ট প্রমাণীকরণ
  • বিভিন্ন প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা হয়েছে (Node.js, Cloudflare Workers এবং দ্রুত)
  • উন্নত টাইপ সিস্টেম
  • ত্রুটি নিক্ষেপ করা হয়
  • পাইপলাইন সমর্থন

স্পষ্ট প্রমাণীকরণ

স্বয়ংক্রিয় প্রমাণীকরণ যখন শুধুমাত্র নির্দিষ্ট ফাংশন আমদানি করে এমন সমস্যার সৃষ্টি করে যেখানে প্রকৃত আচরণ প্রত্যাশার থেকে ভিন্ন এবং একটি সমস্যা ডিবাগ করার সময় নষ্ট করে যা প্রতিরোধ করা যেতে পারে। বিশেষ করে বিভিন্ন প্ল্যাটফর্মে যা পরিবেশের ভেরিয়েবলকে ভিন্নভাবে পরিচালনা করে। তাই আমরা আপনাকে আপনার ক্লায়েন্টকে স্পষ্টভাবে প্রমাণীকরণ করতে চাই।

আমরা বুঝি যে বেশিরভাগ ব্যবহারের ক্ষেত্রে আপনি সেগুলিকে আপনার পরিবেশে সংরক্ষণ করবেন এবং আপনার 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: "andreas@upstash.com",
};

await redis.set<User>("userKey", user);

const user = await redis.get<User>("userKey");
// -> user is typed as User

Redis ঐচ্ছিক আর্গুমেন্ট এবং সম্ভাব্য বিভিন্ন সমন্বয় সহ অনেক কমান্ড অফার করে। টাইপস্ক্রিপ্ট আপনাকে কোডের একটি একক লাইন কার্যকর করার আগে যেকোনো অবৈধ সমন্বয় পরীক্ষা করার অনুমতি দেয়।

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");

পাইপলাইন

Upstash একত্রে ব্যাচ রিকোয়েস্টের জন্য HTTP-তে Redis কমান্ডের পাইপলাইনিং অফার করে এবং সেগুলিকে প্রচুর পরিমাণে পাঠাতে পারে৷ এটি আপনার সম্পাদনের সময় কমাতে পারে এবং আপনার কিছু অর্থ সাশ্রয় করতে পারে, বিশেষ করে যখন সার্ভারহীন ফাংশনগুলি ব্যবহার করে৷

:::নোট পাইপলাইনের এক্সিকিউশন পারমাণবিক নয়। যদিও পাইপলাইনের প্রতিটি কমান্ড ক্রমানুসারে কার্যকর করা হবে, অন্যান্য ক্লায়েন্টদের পাঠানো কমান্ডগুলি পাইপলাইনের সাথে ইন্টারলিভ করতে পারে।:::

আপনি আপনার বিদ্যমান redis থেকে একটি নতুন পাইপলাইন তৈরি করতে পারেন উদাহরণ।

import { Redis } from "@upstash/redis";
const redis = new Redis({
  /* auth */
});

const p = redis.pipeline();

আমরা একাধিক কমান্ড চেইন করার অনুমতি দেওয়ার জন্য পাইপলাইন API ডিজাইন করেছি। আপনি আপনার পাইপলাইনে সমস্ত কমান্ড যোগ করার পরে, আপনি অনুরোধ পাঠাতে পারেন এবং একটি অ্যারে পেতে পারেন যেখানে প্রতিটি উপাদান একই ক্রমে একটি কমান্ডের সাথে মিলে যায়৷

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)

আমি কিভাবে শুরু করব?

console.upstash.com-এ যান এবং একটি নতুন ডেটাবেস তৈরি করুন৷ তারপর দ্রুত-শুরু নির্দেশিকাতে নির্দেশাবলী অনুসরণ করুন

আপনি যদি পূর্বে একটি পুরানো সংস্করণ ব্যবহার করে থাকেন, তাহলে শুরু করতে আপনি GitHub-এর v1 বিভাগে মাইগ্রেট করতে পারেন৷

ভবিষ্যৎ কাজ

Upstash Redis সম্প্রতি redis v6.2 এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য একটি আপডেট পেয়েছে , যা নতুন কমান্ড অন্তর্ভুক্ত করে এবং অন্যদের প্রসারিত করে। @upstash/redis শীঘ্রই এগুলিকে সমর্থন করবে৷

একটি অতিরিক্ত প্ল্যাটফর্ম হিসাবে, আমরা অদূর ভবিষ্যতে ডেনোকে সমর্থন করার পরিকল্পনা করছি৷

ক্লোজিং শব্দ

এটি একটি বড় পরিবর্তন এবং আপডেট করতে আপনার কাছ থেকে কিছু কাজ করতে হবে। অনুগ্রহ করে আপনার অভিজ্ঞতা আমাদের জানান৷

Upstash পণ্যগুলির সাথে কাজ করার সময় আপনার অভিজ্ঞতা উন্নত করতে আমরা যেকোনো প্রতিক্রিয়াকে স্বাগত জানাই৷ ত্রুটিগুলির জন্য GitHub, Discord বা Twitter-এ পৌঁছাতে দ্বিধা করবেন না বা আপনি যদি অবদান রাখতে আগ্রহী হন, একটি বৈশিষ্ট্যের অনুরোধ করতে চান বা সাহায্যের প্রয়োজন৷


  1. Go-redis, Upstash এবং OpenTelemetry এর সাথে ট্রেসিং বিতরণ করা হয়েছে

  2. আপস্ট্যাশ চ্যাটবক্স ঘোষণা করা হচ্ছে

  3. সার্ভারলেস ক্লাউড, Next.js এবং Upstash Redis দিয়ে শুরু করুন

  4. Upstash Redis সহ Netlify গ্রাফের জন্য গ্লোবাল ক্যাশে