Redis برای همان کارهایی که سریع باید باشند
Redis داده را در حافظه نگه میدارد و پاسخ را در کسری از میلیثانیه برمیگرداند. کش کوئری، session کاربر، محدودیت نرخ درخواست، شمارنده و صف کارهای پسزمینه کاربردهای اصلی آن است.
در سکو کلود Redis بهصورت تکنود روی دیسک ماندگار اجرا میشود. مقدار --storage سقف حافظه است و سیاست allkeys-lru وقتی حافظه پر شد، کلیدهای کماستفاده را حذف میکند. Redis پشتیبانگیری مدیریتشده ندارد، پس دادهی اصلی را در دیتابیس ماندگار نگه دارید.
مناسب برای
- کش نتیجهی کوئری و صفحه
- session و توکن کوتاهمدت
- صف BullMQ، Celery یا Laravel Queue
- محدودیت نرخ و شمارنده
از ساخت تا اتصال
ساخت
نسخه و حافظه را انتخاب کنید.
--type redis --storage 2لینک به اپ
با پیشوند REDIS،
REDIS_URLتزریق میشود.--prefix REDISاستفاده
کلاینت فقط
REDIS_URLرا میخواند.REDIS_URL
خروجی ساخت سرویس
sakoocloud db create --name cache --type redis --version 8 ✔ Provisioning cache · db_4n8x2p ℹ Ready in ~90s. Get credentials: sakoocloud db credentials db_4n8x2p sakoocloud apps link-db db_4n8x2p --app my-api --prefix REDIS ✔ Linked database. Env vars injected under REDIS_*. # REDIS_URL=redis://default:••••@…:6379
ساخت Redis
مقدار storage به گیگابایت، سقف حافظهی Redis است.
sakoocloud db create --name cache --type redis --version 8 --storage 2
تنظیمات
متغیرهایی که به اپ تزریق میشوند
پیشوند پیشفرض DATABASE است؛ با --prefix میتوانید نام دیگری بدهید، مثلاً REDIS.
| متغیر | مقدار |
|---|---|
REDIS_URL | رشتهی کامل اتصال |
REDIS_HOST و REDIS_PORT | آدرس داخلی و پورت 6379 |
REDIS_PASSWORD | رمز تولیدشده |
محدودیتها
| مورد | مقدار |
|---|---|
| حداکثر اتصال | ۱۰۰۰۰ |
| سیاست تخلیه | allkeys-lru |
| پشتیبانگیری مدیریتشده | ندارد |
| دسترسی عمومی | در پلنهای پولی |
اتصال از اپ
کلاینتهای رایج رشتهی اتصال را مستقیم قبول میکنند.
import { createClient } from "redis";
const redis = createClient({ url: process.env.REDIS_URL });
await redis.connect();
import os, redis
r = redis.from_url(os.environ["REDIS_URL"])
opt, _ := redis.ParseURL(os.Getenv("REDIS_URL"))
rdb := redis.NewClient(opt)
خطاهای رایج
NOAUTH Authentication required
علتکلاینت بدون رمز وصل میشود.
راهحلبهجای host و port جدا، REDIS_URL را که رمز را دارد استفاده کنید.
کلیدها زودتر از انتظار حذف میشوند
علتحافظه پر شده و allkeys-lru کلیدهای کماستفاده را حذف میکند.
راهحلحافظه را با sakoocloud db resize بیشتر کنید یا TTL کلیدها را کوتاهتر کنید.
بعد از ریاستارت دادهها نیستند
علتاین سرویس داده را در حافظه نگه میدارد و پشتیبانگیری مدیریتشده ندارد.
راهحلدادهای که از دست رفتنش قابل قبول نیست را در PostgreSQL یا MongoDB نگه دارید و این سرویس را فقط برای کش یا دادهی موقت استفاده کنید.
پرسشهای متداول
Redis یا Valkey؟
هر دو پروتکل یکسان دارند. Redis 8 جدیدترین قابلیتهای Redis را دارد و Valkey نسخهی کاملاً متنباز آن است.
میتوانم Redis را دیتابیس اصلی کنم؟
توصیه نمیشود؛ پشتیبانگیری مدیریتشده ندارد. دادهی اصلی را در PostgreSQL یا MongoDB نگه دارید.
Pub/Sub و Stream کار میکنند؟
بله، همهی ساختارهای دادهی Redis در دسترس است.
جزئیات بیشتر در راهنمای Redis در مستندات و مرجع CLI.