🚀 برنامه خود را با redis شارژ کنید: حافظه پنهان ، صف و قدرت در زمان واقعی

redis فقط یک حافظه پنهان نیست-این یک فروشگاه ساختار داده با حافظه سریع و سریع است که می تواند انجام دهد خیلی بیشتربشر بیایید به اعماق شیرجه بزنیم redis چیستبا چرا باید از آن استفاده کنیدوت چگونه می توان آن را به طور مؤثر ادغام کردبشر
red redis چیست؟
redis (سرور فرهنگ لغت از راه دور) است فروشگاه داده های منبع باز و حافظه که می تواند به عنوان:
- بوها مجموعه پایگاه داده
- بوها مخازن
- بوها کارگزار پیام
- بوها سیستم صف
این همه چیز را در حافظه (RAM) ذخیره می کند ، و آن را فوق العاده سریع می کند و پشتیبانی می کند تداوم از طریق عکس های فوری دیسک و پرونده های فقط ضمیمه.
🧠 بررسی اجمالی معماری Redis
در اینجا تصویری ساده از چگونگی تغییر مجدد در پشته برنامه شما آورده شده است:
مفاهیم اصلی:
- فروشگاه ارزش کلیدی – مدل داده اصلی.
- ساختار داده ها – رشته ها ، لیست ها ، مجموعه ها ، مجموعه های مرتب شده ، هش ، جریان.
- میخانه/فرعی -ارتباط در زمان واقعی بین خدمات.
- تداوم – داده ها را با عکس های RDB یا AOF ذخیره کنید.
- در دسترس بودن بالا – از حالت Sentinel یا Cluster استفاده کنید.
🔧 موارد استفاده مشترک
مورد استفاده | ویژگی Redis |
---|---|
ذخیره سازی | TTL ، حافظه lru |
چت در زمان واقعی | میخانه/فرعی |
صف کار | لیست ها ، جریان ها |
تابلوهای | مجموعه های مرتب شده |
انباره جلسه | انقضاء ارزش کلیدی |
💡 ردیس در مقابل پایگاه داده های سنتی
نشان | مجدداً | SQL/NOSQL DBS |
---|---|---|
سرعت | 💥 Super Fast (مبتنی بر RAM) | کندتر (مبتنی بر دیسک) |
تداوم | اختیاری (AOF/RDB) | همیشه |
انواع داده ها | غنی (لیست ، مجموعه و غیره) | محدود یا فقط JSON |
مورد استفاده | در زمان واقعی ، ذخیره سازی | پرس و جو پیچیده |
🛠 تنظیم Redis (بصورت محلی و از طریق Docker)
🔹 نصب محلی
# Ubuntu
sudo apt update
sudo apt install redis-server
# Start Redis
redis-server
🔹 داکر
docker run --name redis-server -p 6379:6379 redis
💻 redis را با node.js وصل کنید
نصب کردن ioredis
یا redis
بسته NPM:
npm install ioredis
استفاده از نمونه:
import Redis from 'ioredis';
const redis = new Redis();
// Set a key
await redis.set("user:123", "John");
// Get a key
const name = await redis.get("user:123");
console.log(name); // John
⚙ مثال ذخیره سازی (اکسپرس + redis)
import express from 'express';
import Redis from 'ioredis';
const app = express();
const redis = new Redis();
app.get('/data', async (req, res) => {
const cached = await redis.get("data");
if (cached) {
return res.send(JSON.parse(cached));
}
const data = await fetchFromDatabase();
await redis.set("data", JSON.stringify(data), 'EX', 60); // Expires in 60 sec
res.send(data);
});
🔁 میخانه/مثال زیر
const pub = new Redis();
const sub = new Redis();
sub.subscribe("chat");
sub.on("message", (channel, message) => {
console.log(`New message on ${channel}: ${message}`);
});
pub.publish("chat", "Hello Redis!");
📷 سایر نمودارهای مفید
Redis از نقشه مورد استفاده کنید
📊 چه موقع نه برای استفاده از redis
- وقتی نیاز دارید نمایش داده شد (پیوست ، فیلترها ، تجمع).
- کی از دست دادن داده ها غیرقابل قبول است (مگر اینکه پایداری به خوبی پیکربندی شود).
- وقتی با شما کار می کنید مجموعه داده های بزرگ که در حافظه قرار نمی گیرند.
🧪 جایزه: Redis به عنوان محدود کننده نرخ
const key = `rate:${userId}`;
const count = await redis.incr(key);
if (count === 1) await redis.expire(key, 60); // 60 sec window
if (count > 10) {
return res.status(429).send("Too many requests");
}
🚀 نتیجه گیری
redis است رعد و برقبا همه کارهوت ادغام آسان به برنامه های مدرن این که آیا شما از آن برای ذخیره سازی ، صف ها یا میخانه/زیر استفاده می کنید ، می تواند به طور قابل توجهی عملکرد را بهبود بخشید و مقیاس پذیری
کوچک را شروع کنید – آن را به عنوان یک لایه حافظه نهان اضافه کنید – و هیچ وقت قلاب خواهید شد!