ذخیره‌ساز کلید-مقدار

Redis مدیریت‌شده برای کش، صف و session

Redis 8 با یک دستور آماده است. حافظه‌ای که انتخاب می‌کنید همان maxmemory است و وقتی پر شود، قدیمی‌ترین کلیدها کنار می‌روند.

نسخه‌ها
8 (پیش‌فرض)، 7.4 و 7.2
حافظه
--storage = maxmemory
تخلیه
allkeys-lru
در اپ
REDIS_URL با --prefix REDIS
لوگوی Redis

Redis برای همان کارهایی که سریع باید باشند

Redis داده را در حافظه نگه می‌دارد و پاسخ را در کسری از میلی‌ثانیه برمی‌گرداند. کش کوئری، session کاربر، محدودیت نرخ درخواست، شمارنده و صف کارهای پس‌زمینه کاربردهای اصلی آن است.

در سکو کلود Redis به‌صورت تک‌نود روی دیسک ماندگار اجرا می‌شود. مقدار --storage سقف حافظه است و سیاست allkeys-lru وقتی حافظه پر شد، کلیدهای کم‌استفاده را حذف می‌کند. Redis پشتیبان‌گیری مدیریت‌شده ندارد، پس داده‌ی اصلی را در دیتابیس ماندگار نگه دارید.

مناسب برای

  • کش نتیجه‌ی کوئری و صفحه
  • session و توکن کوتاه‌مدت
  • صف BullMQ، Celery یا Laravel Queue
  • محدودیت نرخ و شمارنده

از ساخت تا اتصال

  1. ساخت

    نسخه و حافظه را انتخاب کنید.

    --type redis --storage 2
  2. لینک به اپ

    با پیشوند REDIS، REDIS_URL تزریق می‌شود.

    --prefix REDIS
  3. استفاده

    کلاینت فقط REDIS_URL را می‌خواند.

    REDIS_URL

خروجی ساخت سرویس

sakoocloud db
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 است.

terminal
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();

رانتایم‌هایی که معمولاً به آن وصل می‌شوند

خطاهای رایج

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.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید