رفتن به محتوا
cloudhostمستندات
راهنما

کش

کش بدون سرور که هر کلاینت کش و HTTP را می‌فهمد. با هر کلاینت کش وصل شوید، از هر جا با HTTP صدایش بزنید، یا در فانکشن با env.CACHE از آن استفاده کنید.

ایجاد#

ایجاد
cloudhost cache create sessions --memory 128
# created cache sessions (128 MB, eviction on)
#   url:    rediss://default:<token>@sessions.cache.trustpage.ir:6379
#   rest:   https://sessions.cache.trustpage.ir
#   token (shown once): chc_…

حافظه ۳۲، ۶۴ (پیش‌فرض)، ۱۲۸ یا ۲۵۶ مگابایت است. با eviction (پیش‌فرض) وقتی حافظه پر شود کلیدهای قدیمی بیرون می‌روند؛ با --no-eviction نوشتن خطا می‌دهد. کش وقتی کاری ندارد متوقف می‌شود و داده‌اش را نگه می‌دارد.

کلاینت‌های کش#

redis-cli --tls -h sessions.cache.trustpage.ir -p 6379 -a $TOKEN
> SET greeting salam
> INCR visits

پورت ۶۳۷۹، کاربر default و توکن به‌جای رمز. هر کلاینت کش کار می‌کند.

REST#

curl https://sessions.cache.trustpage.ir \
  -H "Authorization: Bearer $TOKEN" \
  -d '["INCR", "visits"]'
# {"result":1}

هر دستور یک آرایهٔ JSON است که با POST فرستاده می‌شود. /pipeline چند دستور را با هم اجرا می‌کند (تا ۱۰۰۰) و /multi-exec آن‌ها را در یک تراکنش. مناسب جاهایی که اتصال TCP ندارند.

توکن‌ها#

توکن
cloudhost cache tokens sessions               # list
cloudhost cache tokens sessions create --ro   # a read-only token, shown once
cloudhost cache tokens sessions revoke 7e5926b6f29c

هر کش با یک توکن خواندن‌ونوشتن به نام default ایجاد می‌شود. برای گزارش‌گیری یا جاهایی که فقط باید بخوانند توکن فقط‌خواندنی ایجاد کنید. توکن چرخاندنی نیست: یکی جدید ایجاد کنید و قبلی را باطل کنید.

env.CACHE در فانکشن‌ها#

type Env = {
  CACHE: {
    get(key: string): Promise<string | null>;
    set(key: string, value: string, opts?: { ex?: number }): Promise<unknown>;
    del(...keys: string[]): Promise<number>;
    incr(key: string): Promise<number>;
    command(args: string[]): Promise<unknown>;
    pipeline(commands: string[][]): Promise<unknown[]>;
  };
};

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const visits = await env.CACHE.incr("visits");
    await env.CACHE.set("last", new Date().toISOString(), { ex: 3600 });
    return Response.json({ visits, hash: await env.CACHE.command(["HGETALL", "settings"]) });
  },
};

فانکشن کش را بدون توکن با env.CACHE می‌خواند. command هر دستور کش را اجرا می‌کند و pipeline چند دستور را.

ماندگاری، حجم و نقطه‌های بازگشت#

هر نوشتن وقتی تایید می‌شود که ماندگار ذخیره شده باشد، پس اگر سروری از کار بیفتد هیچ نوشتنِ تاییدشده‌ای گم نمی‌شود و کش روی سرور دیگری با همان داده‌ها باز می‌شود. داده‌ها می‌توانند از حافظه بزرگ‌تر باشند: حافظه (max_memory_mb) داده‌های داغ را نگه می‌دارد و کلیدهای سرد از فضای ذخیره‌سازی خوانده می‌شوند. سقف حجم نگه‌داری‌شده (max_storage_mb) را طرح شما تعیین می‌کند؛ وقتی پر شود نوشتن‌ها خطا می‌دهند تا حجم را بالا ببرید یا کلیدهایی را حذف کنید.

حجم
cloudhost cache limits                       # the sizes on your plan
cloudhost cache create sessions --max-storage 1024
cloudhost cache update sessions --max-storage 5120
cloudhost cache stats sessions               # keys, hit rate, stored size of the limit

نقطه‌های بازگشت بسته به طرح ۷ تا ۳۰ روز نگه داشته می‌شوند. می‌توانید همین حالا یکی بگیرید و یکی را برگردانید: روی همان کش، که همهٔ داده‌هایش جایگزین می‌شود، یا با --to در یک کش جدید با همان طرح، که توکنش یک‌بار نشان داده می‌شود.

نقطه‌های بازگشت
cloudhost cache checkpoints sessions
cloudhost cache checkpoint sessions
cloudhost cache restore sessions <checkpoint> --to sessions-copy
cloudhost cache restore sessions <checkpoint>   # replaces its data; asks first
بازگرداندن روی همان کش کاری حساس است: از داشبورد یک عامل دوم می‌خواهد. کش بیکار خاموش است و فقط فضای ذخیره‌سازی‌اش، به ازای گیگابایت در ماه، هزینه دارد.

اجرای دستور از CLI#

run
cloudhost cache run sessions SET greeting salam
cloudhost cache run sessions GET greeting
# salam

cache run با اعتبار تیم شما اجرا می‌شود، نه با توکن کش؛ کنسول داشبورد و ابزار MCP run_cache_command هم همین‌طورند. دستورهایی مثل DEL و FLUSHDB داده را عوض می‌کنند.

cloudhost cache delete sessions کش را با داده‌اش حذف می‌کند؛ تا وقتی نسخهٔ زنده‌ای به آن متصل است انجام نمی‌شود.