Valkey
מאגר key-value בזיכרון בקוד פתוח תחת Linux Foundation, שהתפצל מ-Redis OSS 7.2 ותואם ללקוחות ולקובצי הנתונים שלו. מתאים כ-cache, כמאגר sessions או כתור משימות שאפליקציות אחרות באירוח עצמי צריכות.
משאבים לפי רמת עומס
מה האפליקציה עצמה צריכה בכל רמה, לצד מה שאנחנו ממליצים לשרת שמריץ רק אותה.
| רמה | מה זה אומר | דרישות האפליקציה | מומלץ |
|---|---|---|---|
| קלהערכה | עד 0.5 GiB של מפתחות בזיכרון (כ-6 מיליון מפתחות string קטנים): cache, sessions או תור משימות לאפליקציה אחת עד שלוש, snapshots של RDB. | 1 vCPU · 1.25 GiB RAM · 1.25 GiB דיסק | 1.32 vCPU · 3 GiB RAM · 10.753 GiB דיסק |
| בינוניהערכה | עד 4 GiB של מפתחות בזיכרון (כ-50 מיליון מפתחות string קטנים), משותף לכמה אפליקציות עם כתיבות רציפות, snapshots של RDB. | 2 vCPU · 10 GiB RAM · 8.25 GiB דיסק | 2.52 vCPU · 13.5 GiB RAM · 18.803 GiB דיסק |
| כבדהערכה | עד 16 GiB של מפתחות בזיכרון (כ-200 מיליון מפתחות string קטנים), אפליקציות עם הרבה כתיבות ו-I/O threads פעילים, snapshots של RDB ל-dataset גדול. | 4 vCPU · 40 GiB RAM · 32.25 GiB דיסק | 4.92 vCPU · 49.5 GiB RAM · 46.403 GiB דיסק |
מומלץ = דרישות האפליקציה + baseline של המערכת + מרווח ביטחון (headroom), לפי מדיניות ה-sizing 2026.10.0. האפשרויות נשארות בברירת המחדל. ״הערכה״ פירושה שהמקורות לא נותנים מספר למקרה הזה, ולכן הוא מחושב מהם בשיטה שמפורטת תחת רכיבים. איך המספרים נבנים
קבצים מוכנים להפעלה
רמת תמיכה נתמך
תבנית Compose מהמקורות הרשמיים; עוד לא נבדקה בהרצה.
רכיבים
מה כל רכיב צריך בכל רמת עומס, לפני baseline ו-headroom.
| רכיב | קל | בינוני | כבד | מקורות |
|---|---|---|---|---|
| Valkey (cache) | 1 / 1.25 / 1.25 | 2 / 10 / 8.25 | 4 / 40 / 32.25 | [10][13][14][18][23][25] |
איך ההערכות מחושבות
- Valkey · קל: אין טבלת sizing רשמית. RAM: maxmemory בכ-80% מהזיכרון שהוקצה (התיעוד: 8 עד 9 מתוך 10 GB), ולכן 0.5 GiB נתונים ← 0.625 GiB בשימוש; שמירה של dataset עם הרבה כתיבות יכולה לדרוש עד פי 2 (copy-on-write של ה-fork) ← 1.25 GiB. vCPU: הפקודות רצות על thread ראשי אחד. Disk: image דחוס 44,768,058 B (0.042 GiB) ועוד 117,767,168 B פרוס (0.110 GiB), ה-containerd store שומר את שניהם = 0.151 GiB. 0.151 ועוד 0.5 GiB ל-dump.rdb ועוד 0.5 GiB לקובץ הזמני בזמן שמירה ← 1.25.
- Valkey · בינוני: אותה שיטה כמו ב-light. RAM: 4 GiB נתונים ← 5 GiB בשימוש כש-maxmemory הוא 80%, פי 2 ל-copy-on-write בזמן שמירה או AOF rewrite ← 10 GiB. vCPU: ה-thread הראשי ועוד תהליך ה-fork שכותב snapshot של 4 GiB על ליבה שנייה ← 2. Disk: 0.151 GiB ל-image ועוד 4 GiB ל-dump.rdb ועוד 4 GiB לקובץ הזמני בזמן שמירה ← 8.25.
- Valkey · כבד: אותה שיטה. RAM: 16 GiB נתונים ← 20 GiB בשימוש, פי 2 ל-copy-on-write ← 40 GiB. vCPU: io-threads 3 (ה-thread הראשי ועוד שני I/O threads; valkey.conf מציע 2 או 3 בארבע ליבות ולהשאיר ליבה פנויה) וליבה לתהליך השמירה ← 4. Disk: 0.151 GiB ל-image ועוד 16 GiB ל-dump.rdb ועוד 16 GiB לקובץ הזמני בזמן שמירה ← 32.25.
פורטים
פורטים ציבוריים נועדו לגישה מחוץ ל-stack, בדרך כלל דרך reverse proxy; פורטים פנימיים נשארים ברשת של ה-stack עצמו.
משתמש והרשאות (UID/GID)
המשתמש שהתהליך של כל קונטיינר רץ תחתיו, והנתיבים שהוא כותב אליהם. bind mount לאחד הנתיבים האלה חייב להיות ניתן לכתיבה על ידי ה-UID:GID הזה.
צמיחת אחסון
בכמה הנתונים של כל רכיב גדלים בחודש בכל רמת עומס, מעבר לדיסק שבפרופיל. ערך שמסומן ״הנחה״ הוא הנחה מוצהרת של ANAROQ ולא מספר מהמקורות; ההערות מפרטות על מה היא נשענת.
על מה מספרי הצמיחה נשענים
- Valkey: הנתונים יושבים ב-RAM. dump.rdb הוא snapshot שכל שמירה מחליפה, ולכן הדיסק עוקב אחרי ה-dataset, שה-preset מגביל; יותר נתונים פירושם preset גדול יותר, לא גידול חודשי. כש-AOF פעיל, הקבצים יכולים להגיע לפי 2 מגודלם אחרי ה-rewrite האחרון (auto-aof-rewrite-percentage 100) לפני rewrite.
שדרוג וחזרה לאחור
איך עוברים לגרסה חדשה בבטחה, ואיך חוזרים אחורה אם משהו נכשל.
קודם גיבוי
מריצים docker compose exec valkey valkey-cli SAVE (valkey-cli לוקח את הסיסמה מ-VALKEYCLI_AUTH), ואז מעתיקים את /data/dump.rdb, ואת /data/appendonlydir אם AOF פעיל, אל מחוץ לשרת. [6][10][18]
שלבי השדרוג
- קודם מגבים את dump.rdb (ראו גיבוי). אחר כך מגדירים בקובץ ה-Compose את ה-tag המוצמד החדש ומריצים docker compose pull ו-docker compose up -d. בעצירה Valkey שומר את ה-dataset, ובהפעלה הוא טוען את dump.rdb. [2][10][13]
- במעבר מ-8.x ל-9.x, קוראים קודם את ה-release notes של 9.0 ושל 9.1. Valkey 9.0 כותב RDB בגרסה 80 (8.x משתמש ב-11), ולכן שומרים את ה-dump.rdb של 8.x עד שהגרסה החדשה הוכיחה את עצמה. [19][20][21]
- מעבר מ-Redis OSS 7.2 ומטה: מריצים SAVE ב-Redis, עוצרים אותו, מעתיקים את ה-dump.rdb שלו ל-volume של /data של Valkey ומפעילים את Valkey. קובצי נתונים של Redis CE 7.4 ומעלה לא נטענים. [17]
- שדרוג בלי השבתה דורש instance שני כ-replica שמקדמים אחר כך; התבנית הזו מריצה instance יחיד, ולכן מתכננים הפעלה מחדש קצרה. [13]
חזרה לאחור
בתוך אותה גרסה ראשית, מצמידים את ה-tag הקודם ויוצרים מחדש את ה-container. חזרה מ-9.x ל-8.x: עוצרים את ה-stack, מחזירים ל-/data את ה-dump.rdb מלפני השדרוג, מצמידים את ה-tag הישן ומפעילים; כתיבות שנעשו אחרי השדרוג אובדות. [10][19]נגזרupstream לא מתעדים downgrade. rdb.h ממפה את RDB 11 ל-Valkey 7.x ו-8.x ואת RDB 80 ל-9.0, ומעלה את הגרסה רק בשינוי שאינו תואם לאחור, ולכן לא צפוי ששרת 8.x יטען קובץ שנשמר ב-9.x.
שינויים שוברים ידועים
- בגרסה 9.1.2: תיקוני ACL: HGETEX דורש הרשאת כתיבה, ו-MOVE ו-COPY בודקים גישה למסד הנתונים הנוכחי. HPERSIST, HTTL, HPTTL, HEXPIRETIME ו-HPEXPIRETIME מחזירים שגיאת תחביר בלי FIELDS. sanitize-dump-payload לא עושה כלום: ה-payloads נבדקים תמיד. [20]
- בגרסה 9.0.0: פורמט RDB חדש בגרסה 80 (Valkey 7.x ו-8.x משתמשים ב-11), ולכן dump.rdb שנשמר ב-9.x לא חוזר ל-8.x. לקוחות שלא אומתו מקבלים עכשיו NOAUTH לפני כל שגיאת פקודה לא מוכרת או מספר ארגומנטים. [19][21]נגזרסדר ה-NOAUTH מופיע בשינויי ההתנהגות של 9.0.0 (#1475). גרסת ה-RDB לא מופיעה ב-release notes; היא נלקחה ממפת הגרסאות ב-rdb.h ב-9.1.2.
- בגרסה 8.0.0: מיתוג מחדש: ה-pidfile כברירת מחדל הוא valkey.pid ו-syslog-ident הוא valkey, וכותרות התהליכים ושורות הלוג אומרות valkey. MULTI או WATCH מקוננים מבטלים את הטרנזקציה, ו-repl-backlog-size גדל מ-1 MB ל-10 MB. [22]
- בגרסה 7.2 (from Redis): Valkey תואם ל-Redis OSS 7.2 ומטה (פרוטוקול, הגדרות, RDB ו-AOF), אבל לא לקובצי נתונים של Redis CE 7.4 ומעלה. INFO עדיין מדווח redis_version:7.2.4; בודקים את valkey_version במקום. [17]
מגבלות
- כל ה-dataset יושב ב-RAM. maxmemory לא מוגדר, ולכן Valkey גדל עד שנגמר הזיכרון ל-container או למארח. מוסיפים ל-VALKEY_EXTRA_FLAGS את --maxmemory (כ-80% מה-RAM שהוקצה) ו---maxmemory-policy: ברירת המחדל noeviction מסרבת לכתיבות כשהזיכרון מלא, ו-allkeys-lru מתאים ל-cache טהור. [1][13][14][15][18]
- ה-snapshots מבצעים fork לשרת. מגדירים במארח vm.overcommit_memory=1, אחרת שמירה עלולה להיכשל בשגיאת fork כשה-RAM הפנוי קטן מה-dataset; Valkey ממליצים גם לכבות Transparent Huge Pages. שתיהן הגדרות של המארח, שקובץ Compose לא יכול להגדיר ל-container. [13][14][26]
- התבנית משאירה RDB בלבד: snapshot אחרי שעה ושינוי אחד, 5 דקות ו-100, או דקה ו-10,000, ולכן קריסה מאבדת את הכתיבות האחרונות. לתורים מוסיפים --appendonly yes; בשרת עם נתונים מריצים קודם CONFIG SET appendonly yes, אחרת ההפעלה מחדש מתחילה מ-AOF ריק. [1][10][18]
- ב-docker compose stop Valkey שומר את ה-dataset לפני שהוא יוצא, אבל Compose הורג את ה-container אחרי 10 שניות כברירת מחדל. עם dataset גדול מוסיפים לשירות stop_grace_period ארוך יותר, אחרת הכתיבות מאז ה-snapshot האחרון אובדות. [2][26]
- שרת standalone יחיד: בלי replica, Sentinel או cluster, ולכן תקלה במארח פירושה השבתה ושחזור מה-snapshot האחרון שהועתק. [10][13]
אבטחה
- ה-image מכבה את protected mode ולא מגדיר סיסמה, ולכן התבנית תמיד מגדירה אחת (requirepass). פורט 6379 לא נחשף לאינטרנט: האפשרות publish-loopback משתמשת ב-127.0.0.1 בלבד, ובלי TLS הסיסמה והנתונים עוברים ברשת כטקסט גלוי. [1][2][5]
- requirepass היא סיסמה משותפת אחת למשתמש default. למשתמש נפרד לכל אפליקציה עם פקודות ומפתחות מוגבלים, משתמשים ב-ACL (ACL SETUSER). הסיסמה צריכה להיות ארוכה: Valkey יכול לבדוק סיסמאות רבות בשנייה. [5][16][18]
- הסיסמה נמצאת בסביבה של ה-container (VALKEY_EXTRA_FLAGS, VALKEYCLI_AUTH), ולכן valkey-cli בתוך ה-container מתחבר בלי -a. לא מעבירים אותה עם -a: התיעוד ממליץ על VALKEYCLI_AUTH כדרך הבטוחה יותר. [3][6][7]
- 9.1.2 היא גרסת אבטחה: היא מתקנת use-after-free של מפרש Lua שאפשר להפעיל בלי אימות (GHSA-fq2f-crmw-q97r). כדאי להישאר על גרסת ה-patch החדשה ביותר של הענף. [20]
גיבוי
- מעתיקים את /data/dump.rdb לפי לוח זמנים (התיעוד: עותק כל שעה ל-48 שעות, ועותק יומי לחודש או חודשיים) ומוציאים עותק אחד מהשרת כל יום. העתקה בזמן ש-Valkey רץ בטוחה: snapshot חדש מחליף את הקובץ ב-rename אטומי. [10]
- כש-AOF פעיל, מעתיקים את /data/appendonlydir רק כשאין rewrite: מגדירים auto-aof-rewrite-percentage 0, בודקים ב-INFO persistence ש-aof_rewrite_in_progress הוא 0, מעתיקים, ומחזירים את ההגדרה. [10]
- לשחזור, עוצרים את ה-stack, מניחים את dump.rdb ב-volume של /data ומפעילים את Valkey; הוא טוען את הקובץ בהפעלה. כש-AOF פעיל, ה-AOF גובר על dump.rdb, ולכן משחזרים גם את appendonlydir. [10][17]
גרסה אחרונה
- הפרופיל נבדק מול
Valkey 9.1.2
הפרופיל נבדק מול הגרסה האחרונה.
- נבדק ב-
- 14 באוק׳ 2026
- מצב
- נבדק ב-90 הימים האחרונים
- איפה הגרסאות מתפרסמות
- אתר הפרויקט
גרסה
- סטטוס הפרופיל
- פורסם
- נבדק מול גרסה
- Valkey 9.1.2
- גרסת הפרופיל
- 1.0.0
- המספרים אומתו
- 14 באוק׳ 2026
- גרסת הקטלוג
- 2026.10.10
- מדיניות sizing
- 2026.10.0
- קובץ Compose
- לא אומת
הפרויקט וחלופות
- האתר הרשמי
- valkey.io
- קוד מקור
- github.com/valkey-io/valkey
מקורות
- Docker Hub valkey/valkey description: protected mode off (set a password before exposing 6379), /data for persistence, start flags through VALKEY_EXTRA_FLAGS (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- valkey-container 9.1/debian Dockerfile (9.1.2): user valkey 999:999, protected-mode patched to off, WORKDIR /data, tini entrypoint, EXPOSE 6379, no VOLUME, no HEALTHCHECK (מאגר רשמי · נקרא 14 באוק׳ 2026)
- valkey-container 9.1 docker-entrypoint.sh: chown of /data to valkey, setpriv to valkey, umask 0077, exec valkey-server $VALKEY_EXTRA_FLAGS (מאגר רשמי · נקרא 14 באוק׳ 2026)
- Registry config of valkey/valkey:9.1.2 (linux/amd64): no User, ExposedPorts 6379/tcp, no Volumes, no Healthcheck, Entrypoint tini -- docker-entrypoint.sh, Cmd valkey-server, WorkingDir /data (מדידה · נקרא 14 באוק׳ 2026)
- Valkey documentation: Security (protected mode, requirepass refuses every query from unauthenticated clients, ACL recommended, AUTH is sent in clear text) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: valkey-cli (-a, VALKEYCLI_AUTH as the safer way to pass the password, -e for an error exit code) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- src/valkey-cli.c at 9.1.2: password from VALKEYCLI_AUTH (fallback REDISCLI_AUTH); with -e an error reply exits 1 (מאגר רשמי · נקרא 14 באוק׳ 2026)
- src/commands/ping.json at 9.1.2: PING has neither the NO_AUTH nor the LOADING flag (מאגר רשמי · נקרא 14 באוק׳ 2026)
- src/server.c at 9.1.2 processCommand: NOAUTH for commands without NO_AUTH before AUTH; LOADING for commands without the LOADING flag while the dataset loads (מאגר רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: Persistence (RDB on by default, AOF, RDB alone when minutes of loss are acceptable, copying dump.rdb while running is safe) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- valkey.io: open source (BSD), backed by the Linux Foundation; current release 9.1.2 (valkey/valkey:9.1.2), latest of 8.x is 8.1.10 (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey COPYING at 9.1.2: BSD 3-Clause License (מאגר רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: Administration (vm.overcommit_memory = 1, THP off, maxmemory 8 to 9 of 10 GB free, up to 2× memory during an RDB save or AOF rewrite, no auth by default) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: FAQ (empty instance ~3 MB, 1 million small string keys ~85 MB, fork() needs overcommit_memory 1, maxmemory errors on writes, I/O threads) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: Key eviction (maxmemory policies; noeviction refuses new writes, allkeys-lru is a good pick if unsure) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: ACL (named users and permissions with ACL SETUSER) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Valkey documentation: Migration from Redis (compatible with Redis OSS 7.2 and earlier; Redis CE 7.4+ data files are not; INFO reports redis_version:7.2.4) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- valkey.conf at 9.1.2: save points 3600 1 / 300 100 / 60 10000, appendonly no, auto-aof-rewrite-percentage 100, maxmemory-policy noeviction, io-threads guidance, requirepass vs ACL (מאגר רשמי · נקרא 14 באוק׳ 2026)
- src/rdb.h at 9.1.2: RDB version 80 from Valkey 9.0; RDB 11 is the format of Valkey 7.x and 8.x (מאגר רשמי · נקרא 14 באוק׳ 2026)
- Valkey 9.1 release notes (00-RELEASENOTES at 9.1.2): 9.1.2 security release of 31 August 2026, 9.1.0 GA (Release notes · נקרא 14 באוק׳ 2026)
- Valkey 9.0 release notes (00-RELEASENOTES at 9.0.6): behavior changes of 9.0.0, VALKEYCLI_AUTH in valkey-cli (Release notes · נקרא 14 באוק׳ 2026)
- Valkey 8.0 release notes (00-RELEASENOTES at 8.0.11): behavior and configuration changes of 8.0.0 (Release notes · נקרא 14 באוק׳ 2026)
- Docker Hub tag valkey/valkey:9.1.2 (linux/amd64): 44,768,058 B compressed; 7 layers decompressed and counted: 117,767,168 B (מדידה · נקרא 14 באוק׳ 2026)
- Docker Hub tags of valkey/valkey (9.1.2 = 9 = latest, pushed 2026-09-21; 9.2.0-rc1 is a release candidate) (מאגר רשמי · נקרא 14 באוק׳ 2026)
- Docker: containerd image store is the default on fresh Engine 29+ installs and keeps images compressed and uncompressed (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Docker Docs: Compose services reference (stop_grace_period defaults to 10 seconds before SIGKILL; sysctls only for kernel-namespaced parameters) (תיעוד רשמי · נקרא 14 באוק׳ 2026)
- Amazon ElastiCache pricing (Valkey engine: serverless and node-based caches) (תיעוד רשמי · נקרא 14 באוק׳ 2026)