کش
کش بدون سرور که هر کلاینت کش و 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#
cloudhost cache run sessions SET greeting salam
cloudhost cache run sessions GET greeting
# salamcache run با اعتبار تیم شما اجرا میشود، نه با توکن کش؛ کنسول داشبورد و ابزار MCP run_cache_command هم همینطورند. دستورهایی مثل DEL و FLUSHDB داده را عوض میکنند.
cloudhost cache delete sessions کش را با دادهاش حذف میکند؛ تا وقتی نسخهٔ زندهای به آن متصل است انجام نمیشود.