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

ঠিক তেমনি, আপনার ডাটাবেস সব সেট!
ক্লাউডফ্লেয়ার কর্মী তৈরি করা হচ্ছে
আমরা কর্মী তৈরি করতে Cloudflare CLI টুল ব্যবহার করতে যাচ্ছি। এটি একটি চমত্কার সহজ প্রক্রিয়া. শুধু আপনার টার্মিনাল খুলুন এবং নীচের কমান্ড টাইপ করুন:
npm create cloudflare@latest
এই কমান্ডটি কার্যকর করা আপনাকে অ্যাপ্লিকেশনের জন্য বিকল্প এবং কনফিগারেশনের মাধ্যমে নিয়ে যাবে। অবশেষে, এটি আপনাকে Cloudflare এ লগ ইন করার জন্য অনুরোধ করবে। নীচে আমার কনফিগারেশনের একটি উদাহরণ এবং ফলস্বরূপ আউটপুট:
আমরা একটি একক লাইন কমান্ড ব্যবহার করে অ্যাপ্লিকেশনটি তৈরি এবং স্থাপন করেছি। এই কমান্ডের অনুরূপ একটি ফোল্ডার শুরু করা উচিত ছিল:
/url-shortenersrc
└── worker.ts
node_modules
package-lock.json
package.json
tsconfig.json
wrangler.toml Upstash ইন্টিগ্রেশন সক্ষম করা সমানভাবে সহজ হবে৷
৷ক্লাউডফ্লেয়ার - আপস্ট্যাশ ইন্টিগ্রেশন
ক্লাউডফ্লেয়ার ড্যাশবোর্ডে অ্যাক্সেস করুন এবং আপনি যে অ্যাকাউন্টটি তৈরি করেছেন সেই একই অ্যাকাউন্ট দিয়ে লগইন করুন url-shortener আবেদন তারপরে, শ্রমিক ও পৃষ্ঠা> ওভারভিউ-এ নেভিগেট করুন সাইডবারের অংশ। এখানে, আপনি url-shortener পাবেন অ্যাপ্লিকেশন তালিকাভুক্ত।

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

ইন্টিগ্রেশন পৃষ্ঠায়, আপনার Upstash অ্যাকাউন্টের সাথে সংযোগ করুন৷ তারপর, url-shortener নির্বাচন করুন ড্রপডাউন মেনু থেকে ডাটাবেস। সংরক্ষণ বোতাম টিপে প্রক্রিয়াটি চূড়ান্ত করুন৷ .
দ্রষ্টব্য: অনুগ্রহ করে গোপন গোপনীয়তা কনফিগার করুন-এ গোপন নামগুলিতে কোনো পরিবর্তন করবেন না পদক্ষেপ এই শংসাপত্রগুলি স্বয়ংক্রিয়ভাবে Redis.fromEnv(env) দ্বারা নেওয়া হবে৷ কোডে UPSTASH_REDIS_REST_URL হিসাবে লাইন এবং UPSTASH_REDIS_REST_TOKEN .

ইউআরএল শর্টনার বাস্তবায়ন করা
আমাদের বাস্তবায়ন একটি বরং সহজ এক হবে. এটির দুটি কার্যকারিতা থাকবে:
-
যখন POST পদ্ধতি ব্যবহার করে একটি URL পাঠানো হয়, তখন একটি এলোমেলোভাবে তৈরি করা কী সেই URL-এ বরাদ্দ করা হবে। এই কী-URL জোড়া পুনরুদ্ধারের জন্য Redis-এ সংরক্ষণ করা হবে। কীটি ওয়ার্কার ইউআরএলের পাথ হিসেবে যুক্ত করা হবে এবং
<YOUR_WORKER_URL>/<KEY>-এ ব্যবহারকারীর কাছে পাঠানো হবে। বিন্যাস। -
যখন একজন ব্যবহারকারী একটি পাথ হিসাবে পূর্বে যোগ করা কী সহ Worker URL অ্যাক্সেস করে, তখন কীটির সংশ্লিষ্ট মান Redis থেকে পুনরুদ্ধার করা হবে। ব্যবহারকারীকে তারপর একটি
307দিয়ে এই URL-এ পুনঃনির্দেশিত করা হবে প্রতিক্রিয়া কোড।
আমরা src/worker.ts এ অ্যাপ্লিকেশনটি বাস্তবায়ন করব ফাইল নীচে আমাদের ইউআরএল শর্টনারের মৌলিক বাস্তবায়ন রয়েছে:
import { Redis } from "@upstash/redis/cloudflare";
export interface Env {
UPSTASH_REDIS_REST_URL: string;
UPSTASH_REDIS_REST_TOKEN: string;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const redis = Redis.fromEnv(env);
/*
generateRandomKey function returns a 7 digit alphanumerical key.
If an identical key exists in Redis, it will create new key.
*/
async function generateRandomKey(): Promise<string> {
const key: string = btoa(
crypto.getRandomValues(new Uint8Array(2)).toString(),
).replaceAll("=", "");
if (await redis.exists(key)) {
return generateRandomKey();
}
return key;
}
/*
If the request method is POST, "longUrl" field will be extracted from
the request body and new key will be generated for this url.
Then, this key-value pair will be persisted to Redis.
*/
if (request.method === "POST") {
const requestUrl = request.url;
const body = await request.text();
const { longUrl } = JSON.parse(body);
const key = await generateRandomKey();
redis.set(key, longUrl);
const responseUrl = requestUrl + key;
return new Response(responseUrl);
}
const slug: string = request.url.split("/").pop() || "";
const url = (await redis.get(slug)) as string;
/*
If the slug exists in the Redis DB as key, user will be redirected to URL in the value.
If the slug doesn't exist in the Redis, or it doesn't exist at all,
an error will be returned.
*/
if (url) {
return Response.redirect(url, 307);
} else {
const errorText = !slug
? "Please provide a slug."
: `Slug ${slug} not found. `;
return new Response(errorText, { status: 404 });
}
},
};
এখন যেহেতু আমাদের অ্যালগরিদম প্রস্তুত, শুধুমাত্র একটি ধাপ বাকি আছে:অ্যাপ্লিকেশনটি স্থাপন করা। url-shortener-এ নেভিগেট করুন টার্মিনাল থেকে ফোল্ডার, এবং নীচের কমান্ডটি চালান:
npm run deploy আমাদের Cloudflare কর্মী এখন আপ এবং চলমান! আপনি এটি অ্যাপ্লিকেশন ড্যাশবোর্ডে বা একটি কার্ল অনুরোধের মাধ্যমে পরীক্ষা করতে পারেন। এখানে আপনার জন্য একটি উদাহরণ অনুরোধ. আপনি আপনার কর্মী URL দিয়ে URL প্রতিস্থাপন করতে পারেন, অথবা আমার বাস্তবায়নের সাথে পরীক্ষা করতে পারেন:
curl -X POST https://url-shortener.fahreddin.workers.dev \
-d '{ "longUrl" : "https://google.com" }' প্রতিক্রিয়া URL-এ ক্লিক করা আপনাকে https://google.com-এ পুনঃনির্দেশিত করবে৷ .
উপসংহার
টিউটোরিয়ালটি অনুসরণ করার জন্য আপনাকে ধন্যবাদ!
আপনি যেমন আবিষ্কার করেছেন, সার্ভারহীন ফাংশন এবং আপস্ট্যাশ রেডিসের শক্তির সংমিশ্রণ আপনার প্রকল্পগুলির জন্য সম্ভাবনার একটি বিশ্ব উন্মুক্ত করে। এই জুটির বহুমুখীতা এবং দক্ষতা আপনাকে এমন সমাধান তৈরি করতে সক্ষম করে যা শুধুমাত্র উদ্ভাবনীই নয় বরং উল্লেখযোগ্যভাবে প্রতিক্রিয়াশীলও৷
মনে রাখবেন, এই নির্দেশিকা মাত্র শুরু। আপনি কীভাবে এই প্রকল্পটি প্রসারিত এবং উন্নত করতে পারেন তার কোনও সীমা নেই৷
আপনার যদি কোন প্রশ্ন বা সমস্যা থাকে, তাহলে নির্দ্বিধায় আমার সাথে fahreddin@upstash.com এ যোগাযোগ করুন।
শুভ কোডিং!