Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

अपस्टैश ने प्लानट्रिपएआई के लिए तेजी से विकास को बढ़ावा दिया:प्रमुख रणनीतियाँ और सफलता की कहानियाँ

<पी> इस लेख में, मैं एआई-संचालित ट्रिप प्लानिंग स्टार्टअप, प्लानट्रिपएआई के विकास में अपस्टैश की महत्वपूर्ण भूमिका का पता लगाता हूं। उपयोगकर्ता पहुंच के लिए प्रमुख लाइसेंस संग्रहीत करने और यात्रा सामग्री को कुशलतापूर्वक सहेजने और कैशिंग करने जैसे आवश्यक पहलुओं को प्रबंधित करने के लिए अपस्टैश रेडिस का उपयोग महत्वपूर्ण रहा है। इसके अलावा, अपस्टैश की रेट लिमिट सुविधा हमारे सिस्टम की सुरक्षा में महत्वपूर्ण भूमिका निभाती है। यह अनुरोध आवृत्तियों को प्रभावी ढंग से प्रबंधित करता है, संभावित सुरक्षा खतरों के खिलाफ मजबूत सुरक्षा प्रदान करता है और हमारे उपयोगकर्ताओं के लिए एक सुचारू, निर्बाध सेवा सुनिश्चित करता है।

<पी> plantripai.com एक एआई-आधारित यात्रा योजनाकार है जो गंतव्य, ठहरने की अवधि, यात्रा शैली और बजट जैसी उपयोगकर्ता प्राथमिकताओं के आधार पर तुरंत व्यक्तिगत यात्रा कार्यक्रम बनाता है। यह असीमित यात्रा कार्यक्रम निर्माण और विभिन्न डाउनलोड प्रारूप प्रदान करता है।

  • @upstash/redis
  • @upstash/ratelimit
  • next.js

यह कैसे काम करता है

<पी> एआई कंपनियां आम तौर पर उपयोगकर्ताओं को अपने उत्पादों को आज़माने के लिए कई तरीके पेश करती हैं। प्लानट्रिपएआई में, हम फ्रीमियम और सशुल्क प्लान दोनों प्रदान करते हैं।

<पी> हमारे फ्रीमियम में, और सबसे लोकप्रिय योजना में:हर बार जब कोई उपयोगकर्ता वैध लाइसेंस के बिना यात्रा करता है, तो एक नई यादृच्छिक कुंजी उत्पन्न होती है और रेडिस हैश (redis.hset(trip:${key}, data)) में संग्रहीत की जाती है। , यात्रा सामग्री के साथ। यह कुंजी यात्रा के विवरण पृष्ठ तक अस्थायी पहुंच प्रदान करती है। एक बार जब यह पहुंच समाप्त हो जाती है, तो उपयोगकर्ता यह तय कर सकता है कि यात्रा तक स्थायी पहुंच बनाए रखनी है या नहीं।

<पी> इसके अतिरिक्त, फ्रीमियम उपयोगकर्ता एक दर सीमा (fixedWindow) के अधीन हैं ) प्रति 10 सेकंड में 3 अनुरोध, जो एप्लिकेशन पर संभावित हमलों को रोकने में मदद करता है।

<पी> अपस्टैश ने प्लानट्रिपएआई के लिए तेजी से विकास को बढ़ावा दिया:प्रमुख रणनीतियाँ और सफलता की कहानियाँ

<पी> भुगतान योजना के संबंध में, उपयोगकर्ता भुगतान गेटवे के माध्यम से उत्पाद खरीद सकते हैं। सफल लेनदेन पर, भुगतान गेटवे का वेबहुक एक सफल घटना उत्सर्जित करता है, और एक कुंजी वैध कुंजी के रूप में रेडिस में संग्रहीत होती है (redis.set(${licenseKey}, true)) .

<पी> जब वैध लाइसेंस वाला कोई उपयोगकर्ता यात्रा बनाता है, तब भी एक यादृच्छिक कुंजी उत्पन्न होती है और रेडिस में संग्रहीत होती है। इसके अतिरिक्त, नई यात्रा उनके उपयोगकर्ता ऑब्जेक्ट में संग्रहीत की जाती है और उनकी लाइसेंस कुंजी से जुड़ी होती है।

<पी> भुगतान करने वाले उपयोगकर्ता फ्रीमियम उपयोगकर्ताओं की तुलना में अधिक उदार दर सीमा का आनंद लेते हैं। यह उन्नत सुविधा रेडिस में वैध कुंजी की जांच करके गतिशील रूप से प्रदान की जाती है।

<पी> अपस्टैश ने प्लानट्रिपएआई के लिए तेजी से विकास को बढ़ावा दिया:प्रमुख रणनीतियाँ और सफलता की कहानियाँ

यात्रा डेटा संग्रहीत करना

<पी> प्लानट्रिपएआई उपयोगकर्ता-निर्मित यात्राओं को संग्रहीत करने के लिए रेडिस का लाभ उठाता है। तेज़ कुंजी-मूल्य स्टोर के रूप में अपनी दक्षता के कारण रेडिस हमारे लिए एक आदर्श विकल्प है। यह देखते हुए कि एक बार बनाई गई यात्राएं अपरिवर्तनीय हैं, और हैश का उपयोग हमें मुख्य डेटा के साथ मेटाडेटा संग्रहीत करने में सक्षम बनाता है।

<पी> यात्रा डेटा को रेडिस हैश में निम्नानुसार संरचित किया गया है:

{
 "itinerary": [
 { "day": "Day 1", "data": [...] }
 ],
 "info": "This itinerary is designed for a city explorer visiting Paris, France for 2 days.",
 "inputs": {
 "city": "Paris, France",
 "days": 2,
 "accommodation": "Paris France Hotel",
 "kind": "city explorer",
 "currency": "USD",
 "budget": 3000,
 "transportation": "bus"
 },
 "createdAt": ...,
 "shareable": false
}
<पी> HTTP पर अपस्टैश रेडिस एपीआई का उपयोग करके, डेटा को मुफ्त रेडिस डेटाबेस में संग्रहीत किया जाता है, जो प्रति दिन 10,000 अनुरोध मुफ्त प्रदान करता है, जो हमारी आवश्यकताओं के लिए पर्याप्त से अधिक है।

import { Redis } from "@upstash/redis";
 
const redis = new Redis({
 url: "..." // UPSTASH_REDIS_REST_URL
 token: "..." // UPSTASH_REDIS_REST_TOKEN
});
 
redis.hset(`trip:${id}`, data);

मान्य लाइसेंस कुंजियाँ संग्रहीत करना

<पी> जैसा कि पहले उल्लेख किया गया है, प्लानट्रिपएआई की सभी सुविधाओं तक पहुंचने का एक तरीका सशुल्क सदस्यता के माध्यम से है, जहां प्रत्येक भुगतान किए गए उपयोगकर्ता को रेडिस में संग्रहीत एक वैध लाइसेंस कुंजी सौंपी जाती है। कुंजी-मूल्य डेटाबेस के रूप में रेडिस की दक्षता को देखते हुए, यह सेटअप त्वरित सत्यापन जांच के लिए आदर्श है।

<पी> किसी उपयोगकर्ता को वैध के रूप में चिह्नित करने के लिए, हम निम्नलिखित कमांड निष्पादित करते हैं:

import { Redis } from "@upstash/redis";
 
const redis = new Redis({
 url: "..." // UPSTASH_REDIS_REST_URL
 token: "..." // UPSTASH_REDIS_REST_TOKEN
});
 
await redis.set(licenseKey, true);
<पी> उपयोगकर्ता की वैधता सत्यापित करने के लिए, हम इस कमांड का उपयोग करते हैं:

import { Redis } from "@upstash/redis";
 
const redis = new Redis({
 url: "..." // UPSTASH_REDIS_REST_URL
 token: "..." // UPSTASH_REDIS_REST_TOKEN
});
 
const redisLicenseKey = await redis.get(licenseKey);
const valid = Boolean(redisLicenseKey);
 
if (!valid) {
 return new Response(
 JSON.stringify({ message: "The license key is invalid!" }),
 {
 status: 401,
 }
 );
}
 
// successful code here...
 

दर सीमा लागू करना

<पी> हमारे एप्लिकेशन की सुरक्षा में एक प्रमुख विशेषता दर सीमा तर्क है, जो अपस्टैश रेट लिमिट द्वारा समर्थित है। अधिक जानकारी यहां पाई जा सकती है। यह सेवा मुफ़्त और सशुल्क दोनों उपयोगकर्ताओं के लिए एक सहज अनुभव बनाए रखने के लिए महत्वपूर्ण है, जिसने समग्र एप्लिकेशन को प्रभावित किए बिना दुर्भावनापूर्ण उपयोगकर्ताओं के हमलों को सफलतापूर्वक विफल कर दिया है।

<पी> नीचे एक कोड स्निपेट है जो मिडलवेयर के रूप में नेक्स्ट.जेएस का उपयोग करता है। यह कोड उपयोगकर्ता आईपी जांच को प्रबंधित करने में मदद करता है और यह निर्णय लेता है कि बाद के अनुरोधों के साथ आगे बढ़ना है या नहीं।

import {
 NextResponse,
 type NextFetchEvent,
 type NextRequest,
} from "next/server";
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";
 
const cache = new Map();
const ratelimit = new Ratelimit({
 redis: Redis.fromEnv(),
 limiter: Ratelimit.fixedWindow(3, "10s"),
 ephemeralCache: cache,
 analytics: true,
});
 
export default async function middleware(
 request: NextRequest,
 event: NextFetchEvent
): Promise<Response | undefined> {
 const id = request.ip ?? "anonymous";
 
 // optional hard coded IPs
 const blockeds = [];
 if (blockeds.includes(id.trim())) {
 new NextResponse(
 JSON.stringify({
 message: "Blocked :)",
 }),
 { status: 429, headers: { "Content-Type": "application/json" } }
 );
 }
 
 const { success, pending, limit, reset, remaining } = await ratelimit.limit(
 id
 );
 event.waitUntil(pending);
 
 request.headers.set("X-RateLimit-Limit", limit.toString());
 request.headers.set("X-RateLimit-Remaining", remaining.toString());
 request.headers.set("X-RateLimit-Reset", reset.toString());
 
 return success
 ? NextResponse.next()
 : new NextResponse(
 JSON.stringify({
 message:
 "Request cannot be processed! You sent too many requests in a given amount of time.",
 }),
 { status: 429, headers: { "Content-Type": "application/json" } }
 );
}
 
export const config = {
 matcher: ["/api/generate-trip", "/api/get-license/(.*)"],
};

अंतिम शब्द

<पी> पढ़ने के लिए समय निकालने के लिए धन्यवाद! प्लानट्रिपएआई एक साइड प्रोजेक्ट के रूप में शुरू हुआ, जो सास फ्रेमवर्क में नेक्स्ट.जेएस के साथ अपस्टैश रेडिस को एकीकृत करने के बारे में मेरी जिज्ञासा से पैदा हुआ था।

<पी> मुझे पूरी उम्मीद है कि आपको यह जानकारीपूर्ण और व्यावहारिक लगी होगी। आपके प्रश्नों या प्रतिक्रिया की अत्यधिक सराहना की जाती है। किसी भी प्रश्न या टिप्पणी के लिए बेझिझक मुझसे ट्विटर पर जुड़ें।


  1. अपस्टैश ने प्लानट्रिपएआई के लिए तेजी से विकास को बढ़ावा दिया:प्रमुख रणनीतियाँ और सफलता की कहानियाँ अपस्टैश ने प्लानट्रिपएआई के लिए तेजी से विकास को बढ़ावा दिया:प्रमुख रणनीतियाँ और सफलता की कहानियाँ

    इस लेख में, मैं एआई-संचालित ट्रिप प्लानिंग स्टार्टअप, प्लानट्रिपएआई के विकास में अपस्टैश की महत्वपूर्ण भूमिका का पता लगाता हूं। उपयोगकर्ता पहुंच के लिए प्रमुख लाइसेंस संग्रहीत करने और यात्रा सामग्री को कुशलतापूर्वक सहेजने और कैशिंग करने जैसे आवश्यक पहलुओं को प्रबंधित करने के लिए अपस्टैश रेडिस का उपय

  1. 1-लगातार सीएमएसए 1-लगातार सीएमएसए

    1-परसिस्टेंट CSMA कैरियर सेंस मल्टीपल एक्सेस (CMSA) प्रोटोकॉल का एक आक्रामक संस्करण है जो मीडियम एक्सेस कंट्रोल (MAC) लेयर में संचालित होता है। CMSA प्रोटोकॉल का उपयोग करते हुए, एक से अधिक उपयोगकर्ता या नोड्स एक साझा माध्यम से डेटा भेजते और प्राप्त करते हैं जो एक एकल केबल या ऑप्टिकल फाइबर हो सकता है

  1. HTML DOM पिछलासिबलिंग प्रॉपर्टी HTML DOM पिछलासिबलिंग प्रॉपर्टी

    DOM पिछला सिबलिंग गुण पिछले नोड को HTML दस्तावेज़ में निर्दिष्ट नोड के समान ट्री स्तर पर लौटाता है। सिंटैक्स निम्नलिखित वाक्य रचना है - node.previousSibling उदाहरण आइए हम पिछली सिबलिंग संपत्ति का एक उदाहरण देखें - <!DOCTYPE html> <html> <head> <style>    html{ &nb