# URL शॉर्टनर डिज़ाइन करें — सिस्टम डिज़ाइन

Source: https://www.geekswithgeeks.com/hi/system-design/sd-url-shortener

> लंबे URL को छोटी की में बदलने वाली रीड-हैवी सेवा।

## आवश्यकताएँ

किसी URL के लिए छोटा लिंक बनाएँ; विज़िट पर रीडायरेक्ट; लिंक नहीं बदलते; वैकल्पिक एक्सपायरी। मानें 100M नए लिंक/माह और 100:1 रीड:राइट।

## की जनरेशन

एक ग्लोबल काउंटर लें, उसे base62 एन्कोड करें → 7 अक्षर ~3.5 ट्रिलियन लिंक कवर करते हैं। या URL को हैश करें और पहले 7 अक्षर लें, टक्कर को रिट्राई से संभालें।

## डेटा और प्रवाह

एक टेबल, साथ ही रीडायरेक्ट पाथ के सामने एक कैश।

```text
links(key PK, long_url, created_at, expires_at)

GET /{key}:
  cache.get(key) or db.get(key)
  -> 301 redirect to long_url
```

Output:

```
Reads served mostly from cache; DB sharded by key
```

## 301 बनाम 302

301 (स्थायी) ब्राउज़र को रीडायरेक्ट कैश करने देता है — कम हिट, पर क्लिक एनालिटिक्स खो जाते हैं। हर विज़िट गिनने के लिए 302 उपयोग करें।
