{"id":22164,"date":"2026-11-05T11:30:00","date_gmt":"2026-11-05T10:30:00","guid":{"rendered":"https:\/\/webhosting.de\/?p=22164"},"modified":"2026-11-05T07:23:23","modified_gmt":"2026-11-05T06:23:23","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/redis-maxmemory-richtig-dimensionieren\/","title":{"rendered":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento"},"content":{"rendered":"<div class=\"wh-article\" data-wh-layout=\"2.1.2\" style=\"width:100%;max-width:820px;margin:0 auto;color:#263b4b;font-family:inherit;font-size:18px;line-height:1.8;text-align:start;overflow-wrap:break-word;box-sizing:border-box\"><p class=\"wh-lead\" style=\"font-size:20px;line-height:1.7;color:#233746;margin:0 0 1.1em\">Establecer <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code> No es igual que la RAM disponible: este valor controla la expulsi\u00f3n, pero no limita el consumo total de los procesos o contenedores. Adem\u00e1s de los datos y la sobrecarga de Redis, hay que tener en cuenta tambi\u00e9n el espacio para los b\u00faferes, los efectos del asignador y los picos de persistencia. Un valor inicial robusto se obtiene a partir de la <strong style=\"font-weight:700;color:inherit\">l\u00edmite real de almacenamiento<\/strong> y las curvas de consumo bajo una carga representativa. Calcula por separado los valores \u00abPrimary\u00bb y \u00abReplicate\u00bb y comprueba tambi\u00e9n el presupuesto en caso de un posible cambio de roles. <\/p>\n<nav class=\"wh-toc\" aria-label=\"Contenido de este art\u00edculo\" style=\"display:block;margin:28px 0 38px;padding:22px;border:1px solid #d9e4e8;border-radius:14px;background:#f4f8f8\"><p class=\"wh-toc-title\" style=\"font-size:13px;font-weight:700;letter-spacing:.08em;color:#49656b;margin:0 0 14px\">Ir directamente a la secci\u00f3n<\/p><div class=\"wh-toc-grid\" style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px\"><div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#maxmemory-grundlagen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Lo que limita realmente \u00abmaxmemory\u00bb<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#rss-und-persistenz\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">RSS, Allocator y picos de persistencia<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#replikation-speicher\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Las r\u00e9plicas necesitan presupuestos propios<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#metriken-erfassen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Registrar el almacenamiento en tres niveles<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#budget-rechnen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Calcular un presupuesto de almacenamiento viable<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#eviction-vergleichen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Comparaci\u00f3n pr\u00e1ctica de las pol\u00edticas de desahucio<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#betrieb-ueberwachen\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Comprobar la reserva bajo carga<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#fehler-diagnose\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Identificar de forma espec\u00edfica los problemas de memoria<\/a><\/div>\n<div class=\"wh-toc-item\" style=\"display:block;min-width:0;margin:0;padding:0\"><a class=\"wh-toc-link\" href=\"#hosting-entscheidung\" style=\"display:block;height:100%;padding:12px 15px;border:1px solid #dce6e8;border-radius:9px;background:#fff;color:#18575b;font-size:14px;line-height:1.5;font-weight:600;text-decoration:none;box-sizing:border-box\">Valorar el alojamiento y la arquitectura de Redis<\/a><\/div>\n<\/div><\/nav><section class=\"wh-section\" aria-labelledby=\"maxmemory-grundlagen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"maxmemory-grundlagen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Lo que limita realmente \u00abmaxmemory\u00bb<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code> publica en Redis Open Source una <strong style=\"font-weight:700;color:inherit\">Umbral de desahucio<\/strong> No hay un l\u00edmite m\u00e1ximo estricto para el proceso de Redis ni para su contenedor. Si el consumo relevante para la gesti\u00f3n de la memoria alcanza el umbral, Redis intentar\u00e1 eliminar claves en funci\u00f3n de la pol\u00edtica seleccionada. En el caso de una pol\u00edtica sin expulsi\u00f3n, las \u00f3rdenes de escritura que aumentan el uso de memoria pueden fallar. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">El indicador <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code> abarca la memoria ocupada por Redis a trav\u00e9s de su asignador. Esto incluye no solo los valores propiamente dichos de tu aplicaci\u00f3n, sino tambi\u00e9n las estructuras de gesti\u00f3n y otras \u00e1reas de memoria de Redis. Quien calcule el l\u00edmite bas\u00e1ndose \u00fanicamente en el tama\u00f1o estimado de los datos \u00fatiles, no tendr\u00e1 en cuenta esta sobrecarga. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Una parte de <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code> Queda excluido de la prueba de desahucio: <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">mem_not_counted_for_evict<\/code> destaca, en particular, los b\u00faferes temporales de replicaci\u00f3n y AOF. No obstante, estos b\u00faferes requieren memoria f\u00edsica. El valor ya est\u00e1 en <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code> ya est\u00e1 incluido y, por lo tanto, no debe sumarse por segunda vez a este indicador sin comprobarlo previamente.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Esto no significa que todos los datos almacenados en los clientes o en las r\u00e9plicas queden excluidos del c\u00e1lculo de expulsi\u00f3n. Adem\u00e1s, una sola orden de gran tama\u00f1o puede superar temporalmente el umbral de forma significativa. Si estableces <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code> Si se alcanza el l\u00edmite m\u00e1ximo del contenedor, no queda margen fiable para esas oscilaciones y el consumo adicional de recursos del proceso. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Por lo tanto, a la hora de planificar hay que responder por separado a dos preguntas: \u00bfCu\u00e1nto espacio ocupan el conjunto de datos y la sobrecarga de Redis dentro de la gesti\u00f3n de memoria? \u00bfY cu\u00e1nta reserva necesita, adem\u00e1s, todo el entorno de ejecuci\u00f3n? Solo la combinaci\u00f3n de ambas perspectivas permite determinar si un valor elegido por debajo del l\u00edmite real de memoria es plausible.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"rss-und-persistenz\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"rss-und-persistenz\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">RSS, Allocator y picos de persistencia<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Tras un pico de carga, puede <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code> disminuir, mientras que <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory_rss<\/code> sigue siendo alto: aunque Redis haya liberado memoria a trav\u00e9s del asignador, esta no se ha devuelto necesariamente de inmediato al sistema operativo. El RSS describe la memoria residente del proceso desde el punto de vista del sistema operativo y, por lo tanto, constituye un nivel de observaci\u00f3n diferente. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Supongamos que una cach\u00e9 crece considerablemente durante una acci\u00f3n y que, a continuaci\u00f3n, caducan muchas claves. El hecho de que el valor de memoria de Redis sea menor no significa autom\u00e1ticamente que el contenedor recupere de inmediato la cantidad correspondiente de memoria libre. Por lo tanto, para el siguiente pico, la evoluci\u00f3n del consumo real es m\u00e1s importante que la suposici\u00f3n de que la memoria liberada desaparece de inmediato. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Tambi\u00e9n <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">mem_fragmentation_ratio<\/code> No se trata de un simple porcentaje de fragmentaci\u00f3n. La proporci\u00f3n incluye otros componentes del proceso; para el an\u00e1lisis de causas, deber\u00edas tenerla en cuenta junto con los datos disponibles <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">allocator_*<\/code>-analizar las m\u00e9tricas y el historial de carga. A partir de una sola relaci\u00f3n no se puede deducir una reserva v\u00e1lida de forma general. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de las instant\u00e1neas RDB y las reescrituras AOF, Redis crea un proceso hijo. Mediante <strong style=\"font-weight:700;color:inherit\">Copy-on-Write<\/strong> Es posible que se necesiten p\u00e1ginas de memoria f\u00edsica adicionales si se modifican p\u00e1ginas durante el proceso de persistencia. Cuanto mayor y m\u00e1s amplia sea la carga de escritura durante ese proceso, m\u00e1s importante resulta tener en cuenta esta fase a la hora de planificar la capacidad. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail1\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b-1024x683.webp\" class=\"wp-image-22167\" alt=\"Imagen ilustrativa generada por IA de un m\u00f3dulo de RAM extra\u00eddo sobre una base antiest\u00e1tica.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-persistenz-ram-reserve-54c86e44-detail1-08896ef59b.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail1\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">Imagen ilustrativa generada por IA: la memoria f\u00edsica constituye la base, pero no sustituye a la planificaci\u00f3n de las reservas de persistencia.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">La documentaci\u00f3n de Redis indica que, en casos extremos, las aplicaciones con un uso intensivo de escritura pueden llegar a necesitar hasta el doble de la memoria que se utiliza normalmente. Se trata de una advertencia sobre condiciones de carga desfavorables, no de un multiplicador general. Adem\u00e1s, no basta con sumar simplemente los valores RSS del proceso padre y del proceso hijo: las p\u00e1ginas compartidas se contar\u00edan varias veces; lo relevante es la supervisi\u00f3n adecuada del host o del contenedor. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"replikation-speicher\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"replikation-speicher\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Las r\u00e9plicas necesitan presupuestos propios<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Una r\u00e9plica mantiene, por regla general, una copia del conjunto de datos y, para ello, necesita su propia memoria RAM. Por lo tanto, el primario y la r\u00e9plica son consumidores de memoria independientes: una reserva en el primario no libera espacio en el contenedor de la r\u00e9plica. Planifica cada miembro en funci\u00f3n de su propio l\u00edmite y de su consumo observado. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Por defecto, una r\u00e9plica ignora su <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code> para sus propios borrados. El nodo primario decide la eliminaci\u00f3n de claves y replica los borrados. No obstante, los valores almacenados pueden diferir, por ejemplo, debido a diferencias en los b\u00faferes o en las estructuras de datos; por lo tanto, un mismo valor l\u00edmite no garantiza una carga de trabajo id\u00e9ntica. <\/p>\n<figure class=\"wp-block-image size-large wh-figure\" aria-describedby=\"wh-caption-detail2\" style=\"display:block;float:none;clear:both;width:100%;max-width:760px;margin:34px auto 40px;border:1px solid #dae5e9;border-radius:14px;overflow:hidden;background:#f5f8fa;box-shadow:0 10px 28px -17px rgba(24,47,60,.28);box-sizing:border-box\"><div class=\"wh-figure-media\" style=\"display:block;background:#eef3f5;line-height:0\"><img loading=\"lazy\" width=\"800\" height=\"534\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9-1024x683.webp\" class=\"wp-image-22168\" alt=\"Ilustraci\u00f3n generada por IA de dos instancias conectadas con formatos de datos similares y diferentes necesidades de almacenamiento adicional.\" decoding=\"async\" srcset=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9-1024x683.webp 1024w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9-300x200.webp 300w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9-768x512.webp 768w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9-18x12.webp 18w, https:\/\/webhosting.de\/wp-content\/uploads\/2026\/11\/redis-replikation-eigene-speicherbudgets-54c86e44-detail2-820fa7a1b9.webp 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" ><\/div><figcaption class=\"wh-caption\" id=\"wh-caption-detail2\" style=\"display:block;margin:0;padding:12px 18px 15px;border-top:1px solid #dce5e9;color:#506575;background:#f5f8fa;font-size:14px;line-height:1.55;text-align:start\">Ilustraci\u00f3n generada por IA: \u00abPrimary\u00bb y \u00abReplica\u00bb almacenan copias de los datos, pero cada una requiere su propio presupuesto de almacenamiento.<\/figcaption><\/figure><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de una <strong style=\"font-weight:700;color:inherit\">Promoci\u00f3n<\/strong> La antigua r\u00e9plica asume el papel de primario. Por lo tanto, comprueba no solo si dispone de espacio suficiente como copia de lectura, sino tambi\u00e9n si su l\u00edmite de almacenamiento y su configuraci\u00f3n permiten su funcionamiento como primario. Entre otros aspectos, hay que tener en cuenta la carga de escritura, las conexiones de replicaci\u00f3n y el control de expulsi\u00f3n vigente en ese momento. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Desde Redis 7.0, el b\u00fafer de r\u00e9plicas y la cola de replicaci\u00f3n comparten memoria. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">mem_clients_slaves<\/code> Por lo tanto, puede mostrar un valor nulo, aunque la replicaci\u00f3n ocupe memoria. No interpretes este campo de forma aislada y no sumes el backlog y el b\u00fafer de r\u00e9plica sin comprobar, como si fueran \u00e1reas completamente separadas. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Adem\u00e1s del consumo de memoria, el progreso de la transmisi\u00f3n de datos es relevante para el funcionamiento: un retraso presenta unas caracter\u00edsticas diferentes a las del tama\u00f1o de un b\u00fafer. En el art\u00edculo sobre el tema se explica c\u00f3mo se pueden clasificar el estado de replicaci\u00f3n y el retraso: <a href=\"https:\/\/webhosting.de\/es\/redis-replica-desplazamiento-analisis-consistencia-de-datos-cluster\/\">Desplazamiento de replicaci\u00f3n de Redis<\/a>. No obstante, para la reserva de almacenamiento siguen siendo determinantes las curvas de consumo reales de cada instancia.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"metriken-erfassen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"metriken-erfassen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Registrar el almacenamiento en tres niveles<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para el dimensionamiento, necesitas valores de Redis y del entorno en el que se ejecuta la instancia. Los <strong style=\"font-weight:700;color:inherit\">Nivel de observaci\u00f3n<\/strong> determina lo que indica una cifra: la asignaci\u00f3n del alocador, el RSS del proceso y el consumo de contenedores son magnitudes diferentes y no se pueden sumar sin m\u00e1s. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Valores almacenados y sus l\u00edmites de fiabilidad\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Valores almacenados y sus l\u00edmites de fiabilidad<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Talla<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Nivel y significado<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">L\u00edmites de la interpretaci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">memoria_utilizada<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Memoria asignada por Redis a trav\u00e9s del asignador<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Incluye la sobrecarga de Redis y no coincide con los datos \u00fatiles puros.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">memoria_utilizada_rss<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Memoria residente del proceso Redis desde el punto de vista del sistema operativo<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Puede mantenerse alto tras picos de carga; no debe confundirse con \u00abused_memory\u00bb.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">mem_not_counted_for_evict<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Porcentaje de \u00abused_memory\u00bb que se excluye de la comprobaci\u00f3n de expulsi\u00f3n<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Var\u00eda y ya est\u00e1 incluido en \u00abused_memory\u00bb.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Consumo del host o del contenedor<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Consumo en el l\u00edmite de funcionamiento pertinente<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Puede incluir otros consumidores adem\u00e1s de Redis; la definici\u00f3n depende del entorno.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Con <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO memory<\/code> Entre otras cosas, se leen los valores almacenados en Redis y la pol\u00edtica configurada. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">MEMORY STATS<\/code> A\u00f1ade detalles sobre la distribuci\u00f3n de la memoria. Ambos comandos son de lectura; los campos disponibles dependen de la versi\u00f3n de Redis, los permisos y el plan de alojamiento. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Para comprobar la relaci\u00f3n temporal, comprueba adem\u00e1s <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO persistence<\/code> en cuanto a la actividad de persistencia y los valores de \u00abcopy-on-write\u00bb disponibles. <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO replication<\/code> Muestra el rol y el estado de replicaci\u00f3n. Introduce estos datos por separado para el primario y la r\u00e9plica, de modo que, al realizar el an\u00e1lisis, se pueda identificar un cambio de rol o una sincronizaci\u00f3n.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Un \u00fanico valor no refleja ni la carga de trabajo habitual ni la reserva necesaria para picos de demanda. Por eso, recopila series temporales sobre el funcionamiento normal, los picos de escritura y las ejecuciones persistentes, y as\u00edgnales el consumo del host o del contenedor observado simult\u00e1neamente. De este modo, tambi\u00e9n podr\u00e1s detectar si un valor RSS elevado acompa\u00f1a a una carga actual o si persiste tras un pico anterior. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"budget-rechnen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"budget-rechnen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Calcular un presupuesto de almacenamiento viable<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">El punto de partida es la que realmente surte efecto <strong style=\"font-weight:700;color:inherit\">L\u00edmite de almacenamiento<\/strong>: En el caso de un contenedor, puede ser inferior a la memoria RAM del host. Averigua qu\u00e9 otros procesos y componentes del sistema consumen ese mismo l\u00edmite. Lo que se les reserva no est\u00e1 disponible para Redis, ni para datos ni para picos de carga.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A continuaci\u00f3n, resta las reservas para efectos adicionales de RSS y del asignador, los b\u00faferes no contabilizados para la expulsi\u00f3n, los picos de persistencia y un margen de seguridad. El resultado es un valor provisional <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code>-Presupuesto, no es una ecuaci\u00f3n interna de Redis. Las reservas deben ajustarse al mismo l\u00edmite y a situaciones de carga que se produzcan simult\u00e1neamente de forma realista.   <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Ejemplo ilustrativo de c\u00e1lculo, no es una medici\u00f3n: de un l\u00edmite de contenedor de 8 GiB, se deducen 0,5 GiB para otros consumidores, 0,5 GiB para efectos RSS adicionales, 0,5 GiB para b\u00faferes excluidos del c\u00e1lculo de expulsi\u00f3n, 1 GiB para un pico de persistencia y 0,5 GiB de margen de seguridad. Como valor provisional, quedan 5 GiB para <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code>.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Estas cifras no constituyen una recomendaci\u00f3n para una instancia concreta. El ejemplo parte de la base de que las reservas asignadas describen contribuciones adicionales y no superpuestas al l\u00edmite del contenedor. Precisamente en una ejecuci\u00f3n persistente, las p\u00e1ginas de memoria compartidas y el \u00abcopy-on-write\u00bb pueden dificultar la asignaci\u00f3n; una simple suma de los valores RSS del proceso padre y del proceso hijo no ser\u00eda adecuada para ello. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Evita <strong style=\"font-weight:700;color:inherit\">Contabilizaciones duplicadas<\/strong>: <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">mem_not_counted_for_evict<\/code> ya est\u00e1 incluido en <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code>. Si partes del consumo total observado de RSS o del contenedor, no debes volver a sumar esta parte del b\u00fafer sin comprobarla. En el presupuesto de expulsi\u00f3n restante deben caber tanto el conjunto de datos como la sobrecarga de Redis que se ha tenido en cuenta; comprueba despu\u00e9s este enfoque bajo una carga comparable.  <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"eviction-vergleichen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"eviction-vergleichen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Comparaci\u00f3n pr\u00e1ctica de las pol\u00edticas de desahucio<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">El <strong style=\"font-weight:700;color:inherit\">Pol\u00edtica de desalojo<\/strong> Determina c\u00f3mo reacciona Redis ante los comandos de escritura cuando hay escasez de memoria. No sustituye a la planificaci\u00f3n de la capacidad: incluso una pol\u00edtica adecuada requiere reservas al margen del c\u00e1lculo de expulsi\u00f3n. La decisi\u00f3n depende, sobre todo, de qu\u00e9 claves se pueden perder y de c\u00f3mo reacciona la aplicaci\u00f3n ante los errores. <\/p>\n<div class=\"wh-table-scroll\" tabindex=\"0\" role=\"region\" aria-label=\"Pol\u00edticas seg\u00fan la finalidad de uso y el comportamiento ante la escasez de memoria\" style=\"width:100%;max-width:100%;overflow-x:auto;margin:28px 0;border:1px solid #dce5e9;border-radius:14px;background:#fff;box-shadow:0 10px 28px -16px rgba(24,47,60,.32);box-sizing:border-box\"><table style=\"width:100%;min-width:580px;border-collapse:separate;border-spacing:0;border:0;margin:0;font-size:15px;line-height:1.6;background:#fff\"><caption style=\"padding:20px;text-align:start;font-size:17px;line-height:1.5;font-weight:700;color:#173246;background:#fff\">Pol\u00edticas seg\u00fan la finalidad de uso y el comportamiento ante la escasez de memoria<\/caption><thead><tr><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Pol\u00edtica<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">Idoneidad t\u00edpica<\/th><th scope=\"col\" style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#19394d;color:#fff\">P\u00e9rdida y error<\/th><\/tr><\/thead><tbody><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">noeviction<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Datos que no deben eliminarse para liberar espacio<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">No se produce ning\u00fan desalojo para liberar espacio; las instrucciones de escritura que ampl\u00edan la memoria pueden fallar debido a un error OOM.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">allkeys-lru<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Cach\u00e9 con datos recuperables<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#f4f7f9;color:#294252\">Las claves pueden eliminarse seg\u00fan un criterio aproximado de LRU; esto provoca fallos de cach\u00e9.<\/td><\/tr><tr><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">volatile-*<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Inventario en el que solo se prev\u00e9n claves con fecha de caducidad para su expulsi\u00f3n<\/td><td style=\"padding:15px 18px;border:0;border-bottom:1px solid #e2e9ed;text-align:start;vertical-align:top;white-space:normal;font-size:15px;line-height:1.6;background:#fff;color:#294252\">Solo las claves con TTL son candidatas; si no hay candidatas adecuadas, no se puede liberar suficiente espacio.<\/td><\/tr><\/tbody><\/table><\/div><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de una cach\u00e9 pura, se puede <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">allkeys-lru<\/code> son adecuadas cuando las entradas eliminadas se pueden reconstruir a partir de otra fuente. En Redis, el algoritmo LRU es una aproximaci\u00f3n y no una ordenaci\u00f3n global exacta. Las expulsiones frecuentes pueden provocar un mayor n\u00famero de accesos al backend; por eso, no solo son importantes los bytes libres, sino tambi\u00e9n la tasa de aciertos de la cach\u00e9 y la capacidad del backend. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de los datos que no se pueden borrar arbitrariamente, <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">noeviction<\/code> Otra decisi\u00f3n: la aplicaci\u00f3n debe poder gestionar los procesos de escritura fallidos, en lugar de dar por sentado t\u00e1citamente que el almacenamiento se ha realizado con \u00e9xito. La pol\u00edtica no garantiza ni la persistencia ni la protecci\u00f3n frente a un error OOM a nivel del sistema operativo o del contenedor. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de las poblaciones mixtas, la <strong style=\"font-weight:700;color:inherit\">Disciplina TTL<\/strong> fundamental: Una <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">volatile-*<\/code>-La pol\u00edtica solo puede seleccionar claves con un tiempo de caducidad. Si hay muy pocos candidatos adecuados, el TTL por s\u00ed solo no protege contra los errores de escritura. Por lo tanto, comprueba si la cach\u00e9 y los datos importantes realmente deben compartir la misma instancia y la misma estrategia de gesti\u00f3n de errores. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Los datos de sesi\u00f3n ponen de manifiesto el conflicto de objetivos: la eliminaci\u00f3n de una entrada puede suponer para los usuarios la p\u00e9rdida del estado de la sesi\u00f3n, aunque la aplicaci\u00f3n siga funcionando t\u00e9cnicamente. Eval\u00faa las consecuencias y la posibilidad de recuperaci\u00f3n antes de elegir una pol\u00edtica; el art\u00edculo sobre <a href=\"https:\/\/webhosting.de\/es\/gestion-de-sesiones-alojamiento-web-almacenamiento-de-bases-de-datos-redis\/\">Gesti\u00f3n de sesiones con Redis y otros sistemas de almacenamiento<\/a>.<\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"betrieb-ueberwachen\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"betrieb-ueberwachen\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Comprobar la reserva bajo carga<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Un valor calculado para <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory<\/code> Es, en primer lugar, un punto de partida. Pru\u00e9balos en un entorno aislado con una versi\u00f3n de Redis, una estructura de datos y un l\u00edmite de memoria similares. La carga no solo debe reflejar el funcionamiento habitual, sino tambi\u00e9n los picos de escritura y las fases en las que la persistencia y la replicaci\u00f3n est\u00e1n activas al mismo tiempo. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">F\u00edjate en el <strong style=\"font-weight:700;color:inherit\">Consumo de contenedores<\/strong> o la m\u00e9trica correspondiente del host, as\u00ed como los valores de memoria de Redis. Anota cu\u00e1ndo se est\u00e1 ejecutando una instant\u00e1nea o una reescritura AOF y si se est\u00e1 sincronizando una r\u00e9plica. Lo decisivo es cu\u00e1nto margen queda hasta el l\u00edmite real durante los eventos que se solapan, no solo en el tiempo de inactividad posterior.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Con el comando de lectura <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO stats<\/code> Entre otras cosas, debes registrar los contadores de expulsiones. Analiza su evoluci\u00f3n por intervalos de tiempo: un nivel hist\u00f3rico elevado por s\u00ed solo no indica si se est\u00e1n expulsando claves en ese momento. Relaciona el aumento de las expulsiones con las aciertos de cach\u00e9 y la carga del backend, siempre que tu aplicaci\u00f3n facilite estos datos. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Adem\u00e1s, registra las respuestas OOM de Redis en la aplicaci\u00f3n y los incidentes de los contenedores relacionados con el almacenamiento en la plataforma. Ambos errores pueden producirse con una carga similar, pero afectan a l\u00edmites distintos. Por lo tanto, una alerta deber\u00eda tener en cuenta tanto la reserva disponible como los errores observados y su evoluci\u00f3n a lo largo del tiempo. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Repite la evaluaci\u00f3n tras realizar cambios en el conjunto de datos, en la carga de escritura o en la persistencia y la replicaci\u00f3n. Una promoci\u00f3n tambi\u00e9n modifica el papel de una r\u00e9plica y, por lo tanto, el perfil de carga que se debe analizar. Los resultados obtenidos en el entorno aislado no sustituyen a la supervisi\u00f3n continua de las instancias en producci\u00f3n. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"fehler-diagnose\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"fehler-diagnose\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Identificar de forma espec\u00edfica los problemas de memoria<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Si el RSS del proceso aumenta mientras <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">used_memory<\/code> Si se libera memoria, ten en cuenta primero el historial y la carga previa. La memoria liberada no tiene por qu\u00e9 devolverse inmediatamente al sistema operativo. La <strong style=\"font-weight:700;color:inherit\">M\u00e9tricas del asignador<\/strong> de <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO memory<\/code> Ayudan a interpretar los datos; el \u00edndice de fragmentaci\u00f3n por s\u00ed solo no demuestra ni la existencia de una fuga de memoria ni su causa. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">A continuaci\u00f3n, comprueba si el aumento coincide en el tiempo con una carrera de resistencia o con una sincronizaci\u00f3n. Para ello sirven <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO persistence<\/code> y <code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">INFO replication<\/code>. Un valor aislado correspondiente a un b\u00fafer que no se tiene en cuenta para el desalojo solo describe el estado actual. Para calcular una reserva, necesitas observaciones que abarquen las fases relevantes de carga y de perturbaci\u00f3n. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En el caso de una <strong style=\"font-weight:700;color:inherit\">Respuesta de OOM de Redis<\/strong> Comprueba la pol\u00edtica configurada y si hay claves adecuadas para una expulsi\u00f3n. En particular, una orden de escritura puede fallar si Redis no puede liberar espacio suficiente seg\u00fan la pol\u00edtica vigente. La aplicaci\u00f3n debe gestionar este error, en lugar de dar por sentado que la operaci\u00f3n de escritura se ha realizado con \u00e9xito.  <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">En cambio, en caso de una interrupci\u00f3n del contenedor por motivos de memoria, analiza los eventos de la plataforma y el consumo en relaci\u00f3n con el l\u00edmite del contenedor. Ten en cuenta los picos de persistencia y otros consumidores registrados en el contenedor. Un error OOM de Redis y un error OOM del contenedor no son lo mismo: el l\u00edmite de memoria externo puede alcanzarse incluso sin que se haya producido previamente un error OOM de Redis. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><code data-no-translation style=\"font:600 .87em\/1.5 ui-monospace,monospace;color:#235063;background:#edf3f5;border-radius:4px;padding:.1em .3em\">maxmemory-clients<\/code> Tambi\u00e9n puede limitar la memoria ocupada por los clientes. Si la memoria del cliente en cuesti\u00f3n supera el umbral configurado, Redis puede desconectar a los clientes con un consumo elevado; las aplicaciones deben gestionar las interrupciones de conexi\u00f3n. Este ajuste no limita todas las conexiones de replicaci\u00f3n y no sustituye ni al presupuesto total ni a la supervisi\u00f3n de los picos de b\u00fafer. <\/p>\n<\/section><section class=\"wh-section\" aria-labelledby=\"hosting-entscheidung\" style=\"display:block;margin:0 0 36px;min-width:0\"><h2 id=\"hosting-entscheidung\" style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Valorar el alojamiento y la arquitectura de Redis<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Si la reserva observada no es suficiente con una carga representativa, puede ser conveniente aumentar la RAM si se pretende que el conjunto de datos y la carga permanezcan, en principio, en una misma instancia. Sin embargo, la capacidad adicional debe formar parte del l\u00edmite efectivo del host o del contenedor. Un l\u00edmite de Redis mayor por s\u00ed solo no genera memoria f\u00edsica adicional. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Como alternativa, se puede utilizar una <strong style=\"font-weight:700;color:inherit\">Distribuci\u00f3n de la carga<\/strong> distribuir las necesidades de memoria y las operaciones de escritura entre varias instancias. Esto requiere una distribuci\u00f3n adecuada de los datos y una asignaci\u00f3n presupuestaria espec\u00edfica para cada instancia implicada. Las r\u00e9plicas no deben equipararse a una divisi\u00f3n del conjunto de datos: b\u00e1sicamente, conservan una copia y, para ello, necesitan su propia memoria RAM. <\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Tambi\u00e9n puede ser \u00fatil un cambio en la arquitectura, como la separaci\u00f3n de una cach\u00e9 tolerante a p\u00e9rdidas de los datos con requisitos m\u00e1s estrictos. De este modo, es posible seleccionar las pol\u00edticas y las capacidades de forma independiente. Sin embargo, ni esta separaci\u00f3n, ni una mayor cantidad de RAM, ni el reparto de la carga garantizan que en el futuro no se produzcan picos de persistencia, replicaci\u00f3n y escritura.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Al comparar <strong style=\"font-weight:700;color:inherit\">L\u00edmites de los proveedores<\/strong> Aclara si el valor indicado se refiere a un l\u00edmite de contenedores, un l\u00edmite de instancias o un l\u00edmite de la base de datos definido de otra forma. Pregunta tambi\u00e9n qu\u00e9 m\u00e9tricas y comandos de diagn\u00f3stico est\u00e1n disponibles, si las r\u00e9plicas est\u00e1n incluidas en el almacenamiento contratado y c\u00f3mo afecta una promoci\u00f3n a los recursos disponibles.<\/p>\n<p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Redis Open Source, Redis Software y Redis Cloud deben considerarse por separado. En el caso de Redis Software, se aplica el l\u00edmite de base de datos documentado para los shards primarios y r\u00e9plicas; de ello no se deriva ninguna regla correspondiente para una \u00fanica instancia de Redis OSS. En el caso de Redis Cloud y otras ofertas de alojamiento, debes consultar las condiciones espec\u00edficas de cada producto, en lugar de aplicar esta definici\u00f3n sin verificarla. <\/p>\n<\/section><section class=\"wh-sources\" style=\"margin:40px 0 0;padding:24px 0 0;border-top:1px solid #dce5e9;color:#596b7b;font-size:14px;line-height:1.65\"><h2 style=\"margin:38px 0 18px;color:#172f41;font-size:clamp(24px,1.25rem + 1vw,30px);font-weight:700;line-height:1.3;scroll-margin-top:115px\">Fuentes y estado actual de los conocimientos<\/h2><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Estado de la investigaci\u00f3n: <time datetime=\"2026-11-04\">2026-11-04<\/time><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\">Investigaci\u00f3n y descripci\u00f3n del producto a fecha de 4 de noviembre de 2026. Los ejemplos se refieren a Redis de c\u00f3digo abierto; las m\u00e9tricas disponibles y los l\u00edmites de alojamiento dependen de la versi\u00f3n y del proveedor.<\/p><div class=\"wh-source-urls\"><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/replication\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/commands\/info\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/admin\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/develop\/reference\/errors\/common\/oom\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/develop\/reference\/clients\/<\/span><\/p><p style=\"margin:0 0 1.1em;font-size:inherit;line-height:inherit\"><span class=\"wh-source-url\" data-no-translation dir=\"ltr\" style=\"overflow-wrap:anywhere;font:12px\/1.6 ui-monospace,monospace;direction:ltr\">https:\/\/redis.io\/docs\/latest\/operate\/rs\/databases\/memory-performance\/memory-limit\/<\/span><\/p><\/div><\/section><\/div>","protected":false},"excerpt":{"rendered":"<p>El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.<\/p>","protected":false},"author":1,"featured_media":22166,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-22164","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"surfer_file_name":null,"surfer_file_original_url":null,"_wp_attachment_image_alt":null,"litespeed-optimize-set":null,"litespeed-optimize-size":null,"_oembed_b5e1eb923ad3b086e579b1befcd4075c":null,"_elementor_source_image_hash":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"_source_url":null,"_elementor_migrations_state_8b2d":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"_wh_make_key":"wh_54c86e44167291080cf614c61d005eeb","rank_math_internal_links_processed":"1","_wh_make_topic":"Redis maxmemory richtig dimensionieren \u2013 ausreichend Platz f\u00fcr Daten, Replikation und interne Buffer","_wh_make_input_keywords":["redis maxmemory","redis speicher","redis hosting"],"_wh_make_config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"_wh_make_links":{"I1":{"id":"I1","post_id":21475,"url":"https:\/\/webhosting.de\/redis-replication-offset-analyse-datenkonsistenz-cluster\/","title":"Comprender y analizar el desplazamiento de replicaci\u00f3n de Redis para lograr una alta consistencia de los datos","excerpt":"Mostrar\u00e9 c\u00f3mo leo y analizo el offset de Redis de forma espec\u00edfica y c\u00f3mo lo utilizo para lograr una alta consistencia de los datos. De este modo, detecto a tiempo las brechas de replicaci\u00f3n, eval\u00fao los riesgos de conmutaci\u00f3n por error y mantengo los cl\u00fasteres productivos sincronizados de forma fiable. Puntos clave: Las siguientes ideas fundamentales sirven de introducci\u00f3n espec\u00edfica al tema, la terminolog\u00eda y la aplicaci\u00f3n pr\u00e1ctica. El offset mide el progreso del flujo de replicaci\u00f3n byte a byte. El retraso (Lag) es la diferencia entre master_repl_offset y slave_repl_offset. El ID + offset identifica una versi\u00f3n exacta de los datos para las sincronizaciones parciales. El backlog evita las sincronizaciones completas en caso de breves interrupciones de conexi\u00f3n. La supervisi\u00f3n mediante m\u00e9tricas INFO\/de cl\u00faster controla las alertas y la conmutaci\u00f3n por error. \u00bfQu\u00e9 significa el \u00aboffset de replicaci\u00f3n\u00bb de Redis? El offset de replicaci\u00f3n es un contador continuo de 64 bits que refleja cada flujo de bytes transmitido entre el primario y la r\u00e9plica. A partir de \u00e9l, puedo determinar hasta qu\u00e9 punto ha avanzado la replicaci\u00f3n y si una r\u00e9plica a\u00fan tiene trabajo pendiente. El `master_repl_offset` del primario aumenta con cada byte reci\u00e9n generado, mientras que la r\u00e9plica incrementa su propio contador tan pronto como ha aplicado los comandos. Las diferencias dan lugar a un desfase en bytes e indican si la r\u00e9plica va con retraso. Esta sem\u00e1ntica sencilla pero eficaz convierte al offset en la cifra clave para la sincronizaci\u00f3n, el an\u00e1lisis de fallos y la toma de decisiones acertadas en caso de conmutaci\u00f3n por error. Lectura de los offsets: uso correcto de INFO replication Casi siempre comienzo el diagn\u00f3stico con INFO replication, ya que este comando proporciona los campos relevantes de forma concisa. En el primario, compruebo master_repl_offset, as\u00ed como el estado de las r\u00e9plicas conectadas, incluidos sus offsets. En una r\u00e9plica, compruebo adem\u00e1s master_link_status y los estados de sincronizaci\u00f3n para detectar sincronizaciones completas o parciales en curso. Para un an\u00e1lisis m\u00e1s detallado, recurro a salidas estructuradas y correlaciono los offsets con los valores de CPU, E\/S y red. Esta gu\u00eda me ofrece una introducci\u00f3n detallada al comando: Redis INFO para la monitorizaci\u00f3n. ID de replicaci\u00f3n + desplazamiento: versi\u00f3n \u00fanica de los datos. Para obtener una versi\u00f3n \u00fanica, utilizo la combinaci\u00f3n del ID de replicaci\u00f3n y el desplazamiento. El ID marca un historial, mientras que el desplazamiento indica una posici\u00f3n dentro del"},"I2":{"id":"I2","post_id":18104,"url":"https:\/\/webhosting.de\/datenbank-replikation-hosting-master-slave-multi-master-syncio\/","title":"Replicaci\u00f3n de bases de datos en hosting: maestro-esclavo vs. multimaestro","excerpt":"En el \u00e1mbito del alojamiento web, la replicaci\u00f3n de bases de datos determina en qu\u00e9 medida las aplicaciones mantienen su disponibilidad ante un aumento de la carga y con qu\u00e9 rapidez vuelven a leer y escribir tras una interrupci\u00f3n. Explico claramente la diferencia entre las configuraciones maestro-esclavo y multimestre, incluyendo el ajuste del rendimiento, las estrategias de conmutaci\u00f3n por error y los escenarios de uso adecuados. Puntos clave: Los siguientes aspectos fundamentales me ayudan a elegir la estrategia de replicaci\u00f3n adecuada. Maestro-esclavo: escrituras sencillas, lecturas escalables, responsabilidades claras. Multimaestro: escrituras distribuidas, mayor disponibilidad, pero gesti\u00f3n de conflictos. GTID y conmutaci\u00f3n por error: conmutaciones m\u00e1s r\u00e1pidas y rutas de replicaci\u00f3n m\u00e1s limpias. Realidad del alojamiento: la latencia, el almacenamiento y la red influyen en la consistencia. Supervisi\u00f3n y ajuste: m\u00e9tricas, tiempos de recuperaci\u00f3n y configuraci\u00f3n del binlog bajo control. Qu\u00e9 aporta la replicaci\u00f3n en el alojamiento: utilizo la replicaci\u00f3n para aumentar la disponibilidad, distribuir las cargas de lectura y permitir ventanas de mantenimiento sin interrupciones. Las topolog\u00edas maestro-esclavo gestionan las escrituras de forma centralizada, mientras que varias r\u00e9plicas atienden un gran volumen de lecturas, reduciendo as\u00ed los tiempos de respuesta. Las variantes multimaster permiten escrituras distribuidas, lo que reduce la latencia en configuraciones globales y facilita la gesti\u00f3n de la p\u00e9rdida de un nodo. Para pilas web basadas en WordPress, motores de tiendas online o API, esto supone un mayor margen frente a los picos de tr\u00e1fico y una recuperaci\u00f3n m\u00e1s r\u00e1pida tras incidentes. Quien planee un crecimiento horizontal m\u00e1s all\u00e1 de la mera replicaci\u00f3n, debe combinarla gradualmente con el sharding y la replicaci\u00f3n para distribuir mejor los datos y la carga, y hacer que la escalabilidad sea previsible. Maestro-esclavo: funcionamiento y ventajas En una configuraci\u00f3n maestro-esclavo, solo escribo sistem\u00e1ticamente en el maestro, mientras que los esclavos se encargan de las operaciones de lectura y sincronizan los registros binarios. La clara distribuci\u00f3n de roles evita conflictos de escritura y mantiene la claridad del modelo. Esto encaja a la perfecci\u00f3n en muchos escenarios de alojamiento con un alto porcentaje de lecturas, como cat\u00e1logos de productos, portales de contenido o paneles de informes. Seg\u00fan las necesidades, a\u00f1ado m\u00e1s esclavos sin modificar la ruta de escritura. Preveo un margen para el retraso en la replicaci\u00f3n, de modo que los informes o las cach\u00e9s ofrezcan resultados coherentes a pesar de peque\u00f1os retrasos. MySQL maestro-esclavo, paso a paso"},"I3":{"id":"I3","post_id":17026,"url":"https:\/\/webhosting.de\/session-management-webhosting-redis-datenbanken-storage\/","title":"Gesti\u00f3n de sesiones en alojamiento web: almacenamiento optimizado con archivos, Redis y bases de datos","excerpt":"Muestro c\u00f3mo la gesti\u00f3n de sesiones en el alojamiento web se vuelve notablemente m\u00e1s r\u00e1pida cuando almaceno las sesiones de forma selectiva en archivos, Redis o bases de datos y controlo estrictamente su ciclo de vida. De este modo, reduzco la latencia, mantengo alta la tasa de cach\u00e9 y escalo de forma segura a trav\u00e9s de varios servidores. Puntos clave: aplico de forma sistem\u00e1tica los siguientes principios para gestionar las sesiones de forma segura, r\u00e1pida y escalable. Proteger la tasa de cach\u00e9: minimizar el uso de sesiones y mantener las solicitudes optimizadas para la cach\u00e9. Redis para la velocidad: utilizar el almacenamiento en memoria para accesos breves y frecuentes. Archivos de forma consciente: empezar de forma sencilla y migrar pronto en caso de carga. Bases de datos de forma selectiva: persistencia solo para sesiones realmente cr\u00edticas. Configuraci\u00f3n rigurosa: ajustar con precisi\u00f3n PHP-FPM, TTL, tiempos de espera y supervisi\u00f3n. Por qu\u00e9 las sesiones reducen la cuota de cach\u00e9: cada sesi\u00f3n activa establece una cookie PHPSESSID que hace que las solicitudes sean \u00fanicas y, por lo tanto, elude muchas cach\u00e9s. Por eso decido deliberadamente qu\u00e9 rutas necesitan realmente sesiones y cu\u00e1les funcionan estrictamente sin sesi\u00f3n. De este modo, p\u00e1ginas como listas de productos, blogs o contenidos est\u00e1ticos mantienen la m\u00e1xima velocidad y escalabilidad a trav\u00e9s de la CDN y la cach\u00e9 de la aplicaci\u00f3n. Solo abro una sesi\u00f3n cuando la solicitud escribe datos de estado o lee datos sensibles. Mantengo breve la parte de escritura, cierro la sesi\u00f3n r\u00e1pidamente y, de este modo, dejo v\u00eda libre a las solicitudes que se ejecutan en paralelo. Archivos como almacenamiento de sesi\u00f3n: sencillo, pero limitado El gestor del sistema de archivos de PHP es un buen punto de partida, pero solo escala hasta una carga moderada. Cada acceso genera E\/S y, en un almacenamiento lento o NFS, la latencia aumenta r\u00e1pidamente. En configuraciones en cl\u00faster, existe el riesgo de inconsistencias si varios servidores de aplicaciones no apuntan al mismo directorio. Por eso, me aseguro desde el principio de que las rutas est\u00e9n disponibles de forma centralizada o planifico con antelaci\u00f3n el cambio a Redis. Para proyectos peque\u00f1os, el almacenamiento en archivos es suficiente; para proyectos en crecimiento, planifico una ruta de migraci\u00f3n desde el principio. Redis para sesiones: r\u00e1pido y centralizado. Redis almacena los datos de sesi\u00f3n en la RAM y, por lo tanto, ofrece accesos en milisegundos incluso bajo carga. Utilizo Redis de forma centralizada para que todos los servidores de aplicaciones vean las mismas sesiones y los equilibradores de carga puedan distribuirlas libremente. Mantengo los TTL ajustados para que los estados de corta duraci\u00f3n"}},"_wh_make_stage":"entwurf","_wh_make_research_date":"2026-11-04","_wh_make_sitemap_info":{"index":"https:\/\/webhosting.de\/sitemap_index.xml?wh_make=1","sitemaps":["https:\/\/webhosting.de\/post-sitemap1.xml","https:\/\/webhosting.de\/post-sitemap2.xml","https:\/\/webhosting.de\/post-sitemap3.xml","https:\/\/webhosting.de\/post-sitemap4.xml"],"url_count":3138,"fetched_at":"2026-11-04T08:42:44+00:00","selected_ids":[21475,18104,17026]},"_wh_make_draft_hash":"a7260eec0c2da93959c7a86ee14723c7d8333a520ce09a041cd00c7013ecd323","_wh_make_work":{"version":"2.1","identity":{"sheet_ref":"1VMjxV8Q73i0Q1HO6s-u4jNHVRF0snliGCeg97intLPs","sheet_name":"Tabellenblatt1","external_id":"1442","topic":"Redis maxmemory richtig dimensionieren \u2013 ausreichend Platz f\u00fcr Daten, Replikation und interne Buffer","keywords":["redis maxmemory","redis speicher","redis hosting"],"category_input":"781"},"config":{"research_model":"gpt-6.1-terra","writer_model":"gpt-6.1-terra","review_model":"gpt-6.1-sol","image_model":"gpt-image-2.5-flare","image_quality":"high","image_format":"webp","final_status":"draft","charts_enabled":true},"phase":"done","pending":null,"receipts":{"c91fe5d3591117c4f7adc4eee15b3ac3":"30bd1e88656e0718f85329585c679d2d659eb327caa90c03f64fd485fa14990b","56a538c4b74c5f95a41bc250d37cbf22":"2af7e8b7b53aa5257abc760d6f00f6e9777763ed27052d7c83e9b9f939094017","705a7dfceba1d20df0f23b9fd2ae4a0c":"e4d29c52683faa81f0652772c98e9cd0ff484f2d910fcb8c7971e51b02aacc36","b135231ad0c155adefc805c017852707":"f4e5adec18e96b8a349a88ce187eb4bbfa9115ed645c17f0e86a8d0bb2eae8a9","53003776155a329a5e0f6f11290878cb":"4048ee288742f6795705d5772e9b8e4793feff9879d216c4f677e5e296a80fb8","8a16a91cd2f5131ca4c9353d525810d4":"884915d1efd6761143e2810e4af1af9fd5cb6d9656d4d4ec78fd274fde73d467","afcdaa6816fc080ec4fc305a2d31d891":"0778004888b86192a97109fa70e349beba152314a459459a86d44a6b9e344311","6dcd84225d01eebfbf6c8d9681c42042":"2b0bef1e78f33ab0144d901205d3c730a3b63342ce632d4751b8aad9d9ca87f5","b8f9a1b767805fe27c10bc7f424ae28a":"25cbd4d4689c31917f9eaabe8499815876a3e3bc98466674767400fee5d8ae46","1fe947fbc0410ceb6c66f68637a00712":"383cd29043b07fa7309d74e15638feec00edcac3e7c715bd6f58b34d98eaa6fb","9610b9bbce2245afebeb99d1566719f1":"ae059105a70529489e8a66abb21a1c16d93eb8cfb1aeb8092c05910dc2fbfc73"},"parts":{"1":[{"id":"maxmemory-grundlagen","heading":"Was maxmemory tats\u00e4chlich begrenzt","blocks":[{"type":"paragraph","runs":[{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" legt in Redis Open Source eine ","ref":""},{"kind":"strong","text":"Eviction-Schwelle","ref":""},{"kind":"text","text":" fest, keine harte Obergrenze f\u00fcr den Redis-Prozess oder seinen Container. Erreicht der f\u00fcr die Speichersteuerung relevante Verbrauch die Schwelle, versucht Redis abh\u00e4ngig von der gew\u00e4hlten Policy Schl\u00fcssel zu entfernen. Bei einer Policy ohne Eviction k\u00f6nnen speichervergr\u00f6\u00dfernde Schreibbefehle stattdessen fehlschlagen.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Kennzahl ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" umfasst den von Redis \u00fcber seinen Allocator belegten Speicher. Dazu geh\u00f6ren nicht nur die eigentlichen Werte deiner Anwendung, sondern auch Verwaltungsstrukturen und weitere Redis-Speicherbereiche. Wer das Limit allein aus der gesch\u00e4tzten Gr\u00f6\u00dfe der Nutzdaten ableitet, l\u00e4sst diesen Overhead unber\u00fccksichtigt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Teil von ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" wird bei der Eviction-Pr\u00fcfung ausgenommen: ","ref":""},{"kind":"code","text":"mem_not_counted_for_evict","ref":""},{"kind":"text","text":" weist insbesondere tempor\u00e4re Replikations- und AOF-Puffer aus. Diese Puffer ben\u00f6tigen trotzdem realen Speicher. Der Wert ist bereits in ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" enthalten und darf deshalb nicht ohne Pr\u00fcfung ein zweites Mal zu dieser Kennzahl addiert werden.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Daraus folgt nicht, dass s\u00e4mtliche Client- oder Replikationsspeicher au\u00dferhalb der Eviction-Rechnung liegen. Ein einzelner gro\u00dfer Befehl kann die Schwelle zudem vor\u00fcbergehend deutlich \u00fcberschreiten. Setzt du ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" auf das volle Containerlimit, bleibt f\u00fcr solche Ausschl\u00e4ge und zus\u00e4tzlichen Prozessverbrauch kein verl\u00e4sslicher Spielraum.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Planung sind daher zwei Fragen getrennt zu beantworten: Wie viel Platz brauchen Datensatz und Redis-Overhead innerhalb der Speichersteuerung? Und wie viel Reserve ben\u00f6tigt die gesamte Laufzeitumgebung dar\u00fcber hinaus? Erst beide Perspektiven zusammen zeigen, ob ein gew\u00e4hlter Wert unter der tats\u00e4chlichen Speichergrenze plausibel ist.","ref":""}]}]},{"id":"rss-und-persistenz","heading":"RSS, Allocator und Persistenzspitzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Nach einer Lastspitze kann ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" sinken, w\u00e4hrend ","ref":""},{"kind":"code","text":"used_memory_rss","ref":""},{"kind":"text","text":" hoch bleibt: Redis hat dann zwar Speicher \u00fcber den Allocator freigegeben, dieser wurde aber nicht zwingend sofort an das Betriebssystem zur\u00fcckgegeben. RSS beschreibt den residenten Speicher des Prozesses aus Betriebssystemsicht und ist deshalb eine andere Beobachtungsebene.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Angenommen, ein Cache w\u00e4chst w\u00e4hrend einer Aktion stark und viele Schl\u00fcssel laufen danach ab. Der kleinere Redis-Speicherwert bedeutet nicht automatisch, dass der Container sofort entsprechend viel freie Reserve zur\u00fcckerh\u00e4lt. F\u00fcr die n\u00e4chste Spitze ist daher der Verlauf des tats\u00e4chlichen Verbrauchs wichtiger als die Annahme, dass freigegebener Speicher unmittelbar verschwindet.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ","ref":""},{"kind":"code","text":"mem_fragmentation_ratio","ref":""},{"kind":"text","text":" ist kein reiner Fragmentierungsprozentsatz. Das Verh\u00e4ltnis umfasst weitere Prozessanteile; f\u00fcr die Ursachenanalyse solltest du es zusammen mit den verf\u00fcgbaren ","ref":""},{"kind":"code","text":"allocator_*","ref":""},{"kind":"text","text":"-Metriken und der Lastgeschichte betrachten. Aus einem einzelnen Verh\u00e4ltnis l\u00e4sst sich keine allgemein g\u00fcltige Reserve ableiten.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei RDB-Snapshots und AOF-Rewrites erzeugt Redis einen Kindprozess. Durch ","ref":""},{"kind":"strong","text":"Copy-on-Write","ref":""},{"kind":"text","text":" k\u00f6nnen zus\u00e4tzlich physische Speicherseiten ben\u00f6tigt werden, wenn w\u00e4hrend des Persistenzlaufs Seiten ver\u00e4ndert werden. Je st\u00e4rker und breiter die Schreiblast w\u00e4hrenddessen ist, desto wichtiger ist es, diese Phase bei der Kapazit\u00e4tsplanung zu beobachten.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Redis-Administration nennt f\u00fcr schreibintensive Anwendungen im Extrem einen Bedarf bis zum Doppelten des normalerweise genutzten Speichers. Das ist eine Warnung f\u00fcr ung\u00fcnstige Lastverh\u00e4ltnisse, kein pauschaler Multiplikator. Addiere au\u00dferdem nicht einfach die RSS-Werte von Eltern- und Kindprozess: Gemeinsam genutzte Seiten w\u00fcrden mehrfach gez\u00e4hlt; relevant ist die passende Host- oder Containerbeobachtung.","ref":""},{"kind":"citation","text":"","ref":"S4"}]}]},{"id":"replikation-speicher","heading":"Replikate brauchen eigene Budgets","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein Replica h\u00e4lt grunds\u00e4tzlich eine Kopie des Datenbestands und ben\u00f6tigt daf\u00fcr eigenes RAM. Primary und Replica sind deshalb getrennte Speicherverbraucher: Eine Reserve auf dem Primary schafft keinen Platz im Container des Replica. Plane jedes Mitglied anhand seiner eigenen Grenze und seines beobachteten Verbrauchs.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Standardm\u00e4\u00dfig ignoriert ein Replica sein konfiguriertes ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" f\u00fcr eigene Evictions. Der Primary entscheidet \u00fcber das Entfernen von Schl\u00fcsseln und repliziert die L\u00f6schungen. Trotzdem k\u00f6nnen sich die Speicherst\u00e4nde unterscheiden, etwa wegen abweichender Puffer oder Datenstrukturen; derselbe Grenzwert garantiert daher keine identische Auslastung.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer ","ref":""},{"kind":"strong","text":"Promotion","ref":""},{"kind":"text","text":" \u00fcbernimmt das fr\u00fchere Replica die Primary-Rolle. Pr\u00fcfe deshalb nicht nur, ob es als lesende Kopie gen\u00fcgend Platz hat, sondern auch, ob seine Speichergrenze und Konfiguration den Betrieb als Primary tragen. Dazu geh\u00f6ren insbesondere Schreiblast, Replikationsverbindungen und die dann geltende Eviction-Steuerung.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Seit Redis 7.0 teilen sich Replica-Buffer und Replikations-Backlog Speicher. ","ref":""},{"kind":"code","text":"mem_clients_slaves","ref":""},{"kind":"text","text":" kann deshalb null anzeigen, obwohl die Replikation Speicher beansprucht. Interpretiere das Feld nicht isoliert und addiere Backlog und Replica-Buffer nicht ungepr\u00fcft als vollst\u00e4ndig getrennte Bereiche.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Neben dem Speicherverbrauch ist der Fortschritt der Daten\u00fcbertragung f\u00fcr den Betrieb relevant: Eine Verz\u00f6gerung zeigt eine andere Eigenschaft als die Gr\u00f6\u00dfe eines Puffers. Wie sich Replikationsstand und R\u00fcckstand einordnen lassen, erkl\u00e4rt der Beitrag zum ","ref":""},{"kind":"internal_link","text":"Redis Replication Offset","ref":"I1"},{"kind":"text","text":". F\u00fcr die Speicherreserve bleiben dennoch die tats\u00e4chlichen Verbrauchsverl\u00e4ufe jeder Instanz entscheidend.","ref":""}]}]}],"2":[{"id":"metriken-erfassen","heading":"Speicher auf drei Ebenen erfassen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Dimensionierung brauchst du Werte aus Redis und von der Umgebung, in der die Instanz l\u00e4uft. Die ","ref":""},{"kind":"strong","text":"Beobachtungsebene","ref":""},{"kind":"text","text":" entscheidet dar\u00fcber, was eine Zahl aussagt: Allocator-Belegung, Prozess-RSS und Containerverbrauch sind unterschiedliche Gr\u00f6\u00dfen und lassen sich nicht einfach addieren.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"table","caption":"Speicherwerte und ihre Aussagegrenzen","headers":["Gr\u00f6\u00dfe","Ebene und Bedeutung","Grenze der Interpretation"],"rows":[["used_memory","Von Redis \u00fcber den Allocator belegter Speicher","Enth\u00e4lt Redis-Overhead und ist nicht identisch mit den reinen Nutzdaten."],["used_memory_rss","Residenter Speicher des Redis-Prozesses aus Betriebssystemsicht","Kann nach Lastspitzen hoch bleiben; ist nicht mit used_memory gleichzusetzen."],["mem_not_counted_for_evict","Anteil von used_memory, der bei der Eviction-Pr\u00fcfung ausgenommen wird","Schwankt und ist bereits in used_memory enthalten."],["Host- oder Containerverbrauch","Verbrauch an der relevanten Betriebsgrenze","Kann neben Redis weitere Verbraucher umfassen; die Definition h\u00e4ngt von der Umgebung ab."]],"source_ids":["S3"]},{"type":"paragraph","runs":[{"kind":"text","text":"Mit ","ref":""},{"kind":"code","text":"INFO memory","ref":""},{"kind":"text","text":" liest du unter anderem die Redis-Speicherwerte und die konfigurierte Policy. ","ref":""},{"kind":"code","text":"MEMORY STATS","ref":""},{"kind":"text","text":" erg\u00e4nzt Details zur Speicherverteilung. Beide Befehle sind lesend; welche Felder verf\u00fcgbar sind, h\u00e4ngt von Redis-Version, Berechtigungen und Hosting-Angebot ab.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr den zeitlichen Zusammenhang pr\u00fcfst du au\u00dferdem ","ref":""},{"kind":"code","text":"INFO persistence","ref":""},{"kind":"text","text":" auf Persistenzaktivit\u00e4t und verf\u00fcgbare Copy-on-Write-Werte. ","ref":""},{"kind":"code","text":"INFO replication","ref":""},{"kind":"text","text":" zeigt Rolle und Replikationszustand. Erfasse diese Angaben f\u00fcr Primary und Replica getrennt, damit ein Rollenwechsel oder eine Synchronisation bei der Auswertung erkennbar bleibt.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein einzelner Wert zeigt weder die typische Auslastung noch die notwendige Spitzenreserve. Sammle deshalb Zeitreihen \u00fcber normalen Betrieb, Schreibspitzen und Persistenzl\u00e4ufe und ordne ihnen den gleichzeitig beobachteten Host- oder Containerverbrauch zu. So erkennst du auch, ob ein hoher RSS-Wert eine aktuelle Last begleitet oder nach einer fr\u00fcheren Spitze bestehen bleibt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]}]},{"id":"budget-rechnen","heading":"Ein belastbares Speicherbudget berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ausgangspunkt ist die tats\u00e4chlich wirksame ","ref":""},{"kind":"strong","text":"Speichergrenze","ref":""},{"kind":"text","text":": Bei einem Container kann sie niedriger sein als der RAM des Hosts. Ermittle, welche anderen Prozesse und Betriebsanteile dieselbe Grenze beanspruchen. Was ihnen vorbehalten ist, steht Redis nicht f\u00fcr Daten oder Spitzen zur Verf\u00fcgung.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ziehe anschlie\u00dfend Reserven f\u00fcr zus\u00e4tzliche RSS- und Allocator-Effekte, nicht f\u00fcr Eviction gez\u00e4hlte Buffer, Persistenzspitzen und einen Sicherheitsabstand ab. Das Ergebnis ist ein vorl\u00e4ufiges ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":"-Budget, keine Redis-interne Gleichung. Die Reserven m\u00fcssen zur gleichen Grenze und zu realistisch gleichzeitig auftretenden Lastzust\u00e4nden passen.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Illustratives Rechenbeispiel, keine Messung: Von einer Containergrenze von 8 GiB werden 0,5 GiB f\u00fcr andere Verbraucher, 0,5 GiB f\u00fcr zus\u00e4tzliche RSS-Effekte, 0,5 GiB f\u00fcr aus der Eviction-Rechnung ausgenommene Buffer, 1 GiB f\u00fcr eine Persistenzspitze und 0,5 GiB Sicherheitsabstand abgezogen. Als vorl\u00e4ufiger Wert bleiben 5 GiB f\u00fcr ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":".","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Diese Zahlen sind keine Empfehlung f\u00fcr eine konkrete Instanz. Das Beispiel setzt voraus, dass die angesetzten Reserven zus\u00e4tzliche, nicht \u00fcberlappende Beitr\u00e4ge zur Containergrenze beschreiben. Gerade bei einem Persistenzlauf k\u00f6nnen gemeinsame Speicherseiten und Copy-on-Write die Zuordnung erschweren; eine blo\u00dfe Addition der RSS-Werte von Eltern- und Kindprozess w\u00e4re daf\u00fcr ungeeignet.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Vermeide ","ref":""},{"kind":"strong","text":"Doppelz\u00e4hlungen","ref":""},{"kind":"text","text":": ","ref":""},{"kind":"code","text":"mem_not_counted_for_evict","ref":""},{"kind":"text","text":" steckt bereits in ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":". Wenn du vom beobachteten gesamten RSS oder Containerverbrauch ausgehst, darfst du diesen Bufferanteil nicht ungepr\u00fcft noch einmal addieren. Im verbleibenden Eviction-Budget m\u00fcssen sowohl der Datensatz als auch der mitgez\u00e4hlte Redis-Overhead Platz finden; pr\u00fcfe den Ansatz anschlie\u00dfend unter vergleichbarer Last.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"}]}]},{"id":"eviction-vergleichen","heading":"Eviction-Policies im Praxisvergleich","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die ","ref":""},{"kind":"strong","text":"Eviction-Policy","ref":""},{"kind":"text","text":" bestimmt, wie Redis bei Speicherknappheit auf schreibende Befehle reagiert. Sie ersetzt keine Kapazit\u00e4tsplanung: Selbst eine passende Policy ben\u00f6tigt Reserven au\u00dferhalb der Eviction-Rechnung. Die Entscheidung h\u00e4ngt vor allem davon ab, welche Schl\u00fcssel verloren gehen d\u00fcrfen und wie die Anwendung auf Fehler reagiert.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"table","caption":"Policies nach Einsatzzweck und Verhalten bei Speicherknappheit","headers":["Policy","Typische Eignung","Verlust und Fehlerfall"],"rows":[["noeviction","Daten, die nicht zur Platzgewinnung entfernt werden sollen","Keine Eviction zur Platzgewinnung; speichervergr\u00f6\u00dfernde Schreibbefehle k\u00f6nnen mit OOM scheitern."],["allkeys-lru","Cache mit wiederherstellbaren Daten","Schl\u00fcssel k\u00f6nnen nach n\u00e4herungsweisem LRU entfernt werden; dadurch entstehen Cache-Misses."],["volatile-*","Bestand, bei dem nur Schl\u00fcssel mit Ablaufzeit zur Eviction vorgesehen sind","Nur Schl\u00fcssel mit TTL sind Kandidaten; fehlen geeignete Kandidaten, kann Platz nicht ausreichend freigemacht werden."]],"source_ids":["S2","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem reinen Cache kann ","ref":""},{"kind":"code","text":"allkeys-lru","ref":""},{"kind":"text","text":" passen, wenn sich entfernte Eintr\u00e4ge aus einer anderen Quelle neu aufbauen lassen. LRU ist in Redis eine N\u00e4herung und keine exakte globale Sortierung. H\u00e4ufige Evictions k\u00f6nnen mehr Zugriffe auf das Backend ausl\u00f6sen; deshalb sind nicht nur freie Bytes, sondern auch Cache-Trefferrate und Backend-Kapazit\u00e4t wichtig.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr nicht beliebig l\u00f6schbare Daten ist ","ref":""},{"kind":"code","text":"noeviction","ref":""},{"kind":"text","text":" eine andere Entscheidung: Die Anwendung muss fehlgeschlagene Schreibvorg\u00e4nge behandeln k\u00f6nnen, statt stillschweigend mit erfolgreicher Speicherung zu rechnen. Die Policy ist weder Persistenz noch Schutz vor einem OOM auf Betriebssystem- oder Containerebene.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei gemischten Best\u00e4nden ist die ","ref":""},{"kind":"strong","text":"TTL-Disziplin","ref":""},{"kind":"text","text":" entscheidend: Eine ","ref":""},{"kind":"code","text":"volatile-*","ref":""},{"kind":"text","text":"-Policy kann nur Schl\u00fcssel mit Ablaufzeit ausw\u00e4hlen. Wenn zu wenige geeignete Kandidaten vorhanden sind, sch\u00fctzt eine TTL allein nicht vor Schreibfehlern. Pr\u00fcfe deshalb, ob Cache und wichtige Daten wirklich dieselbe Instanz und Fehlerstrategie teilen sollten.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Session-Daten verdeutlichen den Zielkonflikt: Ein entfernter Eintrag kann f\u00fcr Nutzer den Verlust eines Sitzungszustands bedeuten, auch wenn die Anwendung technisch weiterl\u00e4uft. Bewerte die Folgen und Wiederherstellbarkeit vor der Policy-Wahl; zus\u00e4tzliche Grundlagen bietet der Beitrag zum ","ref":""},{"kind":"internal_link","text":"Session-Management mit Redis und anderen Speichern","ref":"I3"},{"kind":"text","text":".","ref":""}]}]}],"3":[{"id":"betrieb-ueberwachen","heading":"Reserve unter Last \u00fcberpr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein berechneter Wert f\u00fcr ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" ist zun\u00e4chst ein Ausgangspunkt. Pr\u00fcfe ihn in einer isolierten Umgebung mit vergleichbarer Redis-Version, Datenstruktur und Speichergrenze. Die Last sollte nicht nur den gew\u00f6hnlichen Betrieb abbilden, sondern auch Schreibspitzen und Phasen, in denen Persistenz und Replikation gleichzeitig aktiv sind.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Beobachte dabei den ","ref":""},{"kind":"strong","text":"Containerverbrauch","ref":""},{"kind":"text","text":" beziehungsweise die passende Host-Metrik ebenso wie Redis-Speicherwerte. Halte fest, wann ein Snapshot oder AOF-Rewrite l\u00e4uft und ob ein Replica synchronisiert wird. Entscheidend ist, wie viel Abstand zur tats\u00e4chlichen Grenze w\u00e4hrend \u00fcberlappender Ereignisse bleibt, nicht nur im Leerlauf danach.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Mit dem lesenden Befehl ","ref":""},{"kind":"code","text":"INFO stats","ref":""},{"kind":"text","text":" erfasst du unter anderem Eviction-Z\u00e4hler. Werte deren \u00c4nderung pro Zeitintervall aus: Ein hoher historischer Stand allein sagt nicht, ob gerade Schl\u00fcssel verdr\u00e4ngt werden. Setze steigende Evictions in Beziehung zu Cache-Treffern und Backend-Last, sofern deine Anwendung diese Gr\u00f6\u00dfen bereitstellt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse au\u00dferdem Redis-OOM-Antworten in der Anwendung und speicherbedingte Container-Ereignisse auf der Plattform. Beide Fehler k\u00f6nnen bei \u00e4hnlicher Last auftreten, betreffen aber unterschiedliche Grenzen. Eine Alarmierung sollte deshalb sowohl die verf\u00fcgbare Reserve als auch die beobachteten Fehler und deren zeitlichen Verlauf ber\u00fccksichtigen.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Wiederhole die Bewertung nach \u00c4nderungen am Datensatz, an der Schreiblast oder an Persistenz und Replikation. Auch eine Promotion ver\u00e4ndert die Rolle eines Replica und damit das zu pr\u00fcfende Lastprofil. Die Ergebnisse aus der isolierten Umgebung ersetzen nicht die fortlaufende Beobachtung der produktiven Instanzen.","ref":""},{"kind":"citation","text":"","ref":"S5"}]}]},{"id":"fehler-diagnose","heading":"Speicherprobleme gezielt eingrenzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Steigt der Prozess-RSS, w\u00e4hrend ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" f\u00e4llt, betrachte zuerst den Verlauf und die vorherige Last. Freigegebener Speicher muss nicht sofort an das Betriebssystem zur\u00fcckgehen. Die ","ref":""},{"kind":"strong","text":"Allocator-Metriken","ref":""},{"kind":"text","text":" aus ","ref":""},{"kind":"code","text":"INFO memory","ref":""},{"kind":"text","text":" helfen bei der Einordnung; das Fragmentierungsverh\u00e4ltnis allein beweist weder ein Speicherleck noch dessen Ursache.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe anschlie\u00dfend, ob der Anstieg zeitlich mit einem Persistenzlauf oder einer Synchronisierung zusammenf\u00e4llt. Dazu dienen ","ref":""},{"kind":"code","text":"INFO persistence","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"INFO replication","ref":""},{"kind":"text","text":". Ein einzelner Wert f\u00fcr nicht zur Eviction gez\u00e4hlte Buffer beschreibt nur den aktuellen Zustand. F\u00fcr eine Reserve brauchst du Beobachtungen \u00fcber relevante Last- und St\u00f6rungsphasen hinweg.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer ","ref":""},{"kind":"strong","text":"Redis-OOM-Antwort","ref":""},{"kind":"text","text":" pr\u00fcfe die konfigurierte Policy und ob geeignete Schl\u00fcssel f\u00fcr eine Eviction vorhanden sind. Insbesondere kann ein Schreibbefehl scheitern, wenn Redis unter der geltenden Policy keinen ausreichenden Platz freimachen kann. Die Anwendung muss diesen Fehler behandeln, statt einen erfolgreichen Schreibvorgang vorauszusetzen.","ref":""},{"kind":"citation","text":"","ref":"S6"},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem speicherbedingten Container-Abbruch untersuche dagegen die Plattformereignisse und den Verbrauch gegen\u00fcber dem Containerlimit. Beziehe Persistenzspitzen und andere im Container erfasste Verbraucher ein. Ein Redis-OOM und ein Container-OOM sind nicht gleichzusetzen: Auch ohne eine vorherige Redis-OOM-Antwort kann die \u00e4u\u00dfere Speichergrenze erreicht werden.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"code","text":"maxmemory-clients","ref":""},{"kind":"text","text":" kann zus\u00e4tzlich den von Clients belegten Speicher begrenzen. \u00dcberschreitet der relevante Client-Speicher die konfigurierte Schwelle, kann Redis Clients mit hohem Verbrauch trennen; Anwendungen m\u00fcssen mit Verbindungsabbr\u00fcchen umgehen. Die Einstellung begrenzt nicht s\u00e4mtliche Replikationsverbindungen und ersetzt weder das Gesamtbudget noch die Beobachtung von Pufferspitzen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"hosting-entscheidung","heading":"Redis Hosting und Architektur abw\u00e4gen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Reicht die beobachtete Reserve bei repr\u00e4sentativer Last nicht aus, kann mehr RAM sinnvoll sein, wenn Datensatz und Last grunds\u00e4tzlich auf einer Instanz bleiben sollen. Die zus\u00e4tzliche Kapazit\u00e4t muss jedoch zur tats\u00e4chlich wirksamen Host- oder Containergrenze geh\u00f6ren. Ein gr\u00f6\u00dferes Redis-Limit allein schafft keinen zus\u00e4tzlichen physischen Speicher.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Alternativ kann eine ","ref":""},{"kind":"strong","text":"Lastverteilung","ref":""},{"kind":"text","text":" den Speicherbedarf und die Schreibarbeit auf mehrere Instanzen verteilen. Das erfordert eine passende Aufteilung der Daten und eine eigene Budgetierung f\u00fcr jede beteiligte Instanz. Replikate sind dabei nicht mit einer Aufteilung des Datenbestands gleichzusetzen: Sie halten grunds\u00e4tzlich eine Kopie und ben\u00f6tigen daf\u00fcr eigenes RAM.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch eine Architektur\u00e4nderung kann helfen, etwa die Trennung eines verlusttoleranten Caches von Daten mit strengeren Anforderungen. Dadurch lassen sich Policies und Kapazit\u00e4ten unabh\u00e4ngig w\u00e4hlen. Weder diese Trennung noch mehr RAM oder Lastverteilung garantiert allerdings, dass Persistenz-, Replikations- und Schreibspitzen k\u00fcnftig ausbleiben.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Beim Vergleich von ","ref":""},{"kind":"strong","text":"Anbietergrenzen","ref":""},{"kind":"text","text":" kl\u00e4re, ob der ausgewiesene Wert ein Containerlimit, ein Instanzlimit oder ein anders definiertes Datenbanklimit bezeichnet. Frage au\u00dferdem, welche Metriken und Diagnosebefehle zug\u00e4nglich sind, ob Replikate im gebuchten Speicher enthalten sind und wie sich eine Promotion auf die verf\u00fcgbaren Ressourcen auswirkt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Redis Open Source, Redis Software und Redis Cloud sind getrennt zu betrachten. Bei Redis Software gilt das dokumentierte Datenbanklimit \u00fcber Primary- und Replica-Shards hinweg; daraus folgt keine entsprechende Regel f\u00fcr eine einzelne Redis-OSS-Instanz. F\u00fcr Redis Cloud und andere Hosting-Angebote pr\u00fcfst du die jeweils konkreten Produktbedingungen, statt diese Definition ungepr\u00fcft zu \u00fcbertragen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]}]}]},"plan":{"reader_question":"Wie gro\u00df darf Redis maxmemory sein, damit Daten, Replikation, Clients und Persistenz auch unter Last innerhalb der verf\u00fcgbaren Speichergrenze bleiben?","sections":[{"id":"maxmemory-grundlagen","heading":"Was maxmemory tats\u00e4chlich begrenzt","part":1,"target_words":270,"purpose":"Die Eviction-Schwelle von einer harten Prozess- oder Containergrenze abgrenzen. In kurzen Abs\u00e4tzen erkl\u00e4ren, dass used_memory auch Redis-Overhead enth\u00e4lt, mem_not_counted_for_evict darin enthalten und bei der Eviction-Pr\u00fcfung ausgenommen ist. Ein gro\u00dfer Befehl kann die Schwelle vor\u00fcbergehend \u00fcberschreiten; nicht alle Client- und Replikationsbereiche pauschal ausnehmen.","source_ids":["S2","S3"],"internal_link_ids":[]},{"id":"rss-und-persistenz","heading":"RSS, Allocator und Persistenzspitzen","part":1,"target_words":270,"purpose":"Anhand eines Lastspitzen-Beispiels used_memory und Prozess-RSS unterscheiden und erkl\u00e4ren, warum freigegebener Speicher im RSS verbleiben kann. Fragmentierungsverh\u00e4ltnis nicht als reinen Prozentsatz behandeln. Fork und Copy-on-Write bei RDB und AOF erl\u00e4utern; das m\u00f6gliche Extrem bis zum Doppelten als Warnung statt allgemeiner Formel einordnen und gemeinsame Speicherseiten beachten.","source_ids":["S3","S4"],"internal_link_ids":[]},{"id":"replikation-speicher","heading":"Replikate brauchen eigene Budgets","part":1,"target_words":270,"purpose":"Primary und Replica als getrennte Speicherverbraucher erkl\u00e4ren: Datenkopie, abweichende Puffer und standardm\u00e4\u00dfig vom Primary gesteuerte Evictions. Promotion als eigenes Kapazit\u00e4tsszenario einf\u00fchren. Redis 7.0 und den geteilten Speicher von Backlog und Replica-Buffern nennen; mem_clients_slaves nicht isoliert deuten oder Bereiche doppelt addieren.","source_ids":["S3","S5"],"internal_link_ids":["I1"]},{"id":"metriken-erfassen","heading":"Speicher auf drei Ebenen erfassen","part":2,"target_words":270,"purpose":"Eine informative Tabelle zu used_memory, used_memory_rss, mem_not_counted_for_evict und Host- oder Containerverbrauch planen: Bedeutung, Beobachtungsebene und Interpretationsgrenze. Anschlie\u00dfend lesende Befehle INFO memory, INFO persistence, INFO replication und MEMORY STATS sowie versions- und angebotsabh\u00e4ngige Felder einordnen. Zeitreihen und repr\u00e4sentative Lastphasen statt einzelner Werte betonen.","source_ids":["S3","S5"],"internal_link_ids":[]},{"id":"budget-rechnen","heading":"Ein belastbares Speicherbudget berechnen","part":2,"target_words":280,"purpose":"Schrittweise von der tats\u00e4chlichen Grenze \u00fcber andere Verbraucher, zus\u00e4tzliche RSS-Effekte, nicht f\u00fcr Eviction gez\u00e4hlte Buffer, Persistenzspitzen und Sicherheitsabstand zu einem vorl\u00e4ufigen maxmemory gelangen. Ein ausdr\u00fccklich illustratives Zahlenbeispiel ohne Messbehauptung planen. Einheitliche Bezugsgr\u00f6\u00dfen, \u00dcberschneidungen und den Platz f\u00fcr Datensatz samt Redis-Overhead innerhalb des Budgets erkl\u00e4ren.","source_ids":["S2","S3","S4"],"internal_link_ids":[]},{"id":"eviction-vergleichen","heading":"Eviction-Policies im Praxisvergleich","part":2,"target_words":270,"purpose":"Eine Vergleichstabelle f\u00fcr noeviction, allkeys-lru und volatile-* mit Eignung, Verlustverhalten und Fehlerfall vorsehen. Cache, wichtige Daten und gemischten Bestand anhand konkreter Folgen unterscheiden; begrenzte TTL-Kandidaten und n\u00e4herungsweises LRU erl\u00e4utern. Session-Daten als Beispiel f\u00fcr bewusst zu bewertende Verlustfolgen einordnen.","source_ids":["S2","S6"],"internal_link_ids":["I3"]},{"id":"betrieb-ueberwachen","heading":"Reserve unter Last \u00fcberpr\u00fcfen","part":3,"target_words":270,"purpose":"Einen Ablauf f\u00fcr isolierte Tests unter vergleichbarer Last und anschlie\u00dfendes Monitoring planen: normale und gleichzeitige Schreib-, Persistenz- und Replikationsspitzen beobachten. INFO stats und Z\u00e4hler\u00e4nderungen mit Containerverbrauch, Evictions und OOM-Fehlern verkn\u00fcpfen. Kein Test als durchgef\u00fchrt darstellen; nach Last- und Rollen\u00e4nderungen neu dimensionieren.","source_ids":["S3","S4","S5","S6"],"internal_link_ids":[]},{"id":"fehler-diagnose","heading":"Speicherprobleme gezielt eingrenzen","part":3,"target_words":270,"purpose":"Eine Diagnosefolge f\u00fcr steigendes RSS, Redis-OOM und Container-OOM anhand von Verlauf, Allocator-Feldern, Persistenz und Replikation skizzieren. Einzelne Bufferwerte nicht als Spitzenreserve interpretieren. maxmemory-clients als gesonderten Schutz mit m\u00f6glichen Client-Trennungen erkl\u00e4ren, nicht als umfassende Begrenzung aller Replikationsverbindungen.","source_ids":["S3","S6","S7"],"internal_link_ids":[]},{"id":"hosting-entscheidung","heading":"Redis Hosting und Architektur abw\u00e4gen","part":3,"target_words":260,"purpose":"Abschlie\u00dfend Entscheidungskriterien f\u00fcr mehr RAM, Lastverteilung oder Architektur\u00e4nderungen gegen\u00fcberstellen, ohne Spitzenfreiheit zu versprechen. Anbietergrenzen, Metrikzugang und Einbeziehung von Replikaten pr\u00fcfen; Redis OSS, Redis Software und Redis Cloud ausdr\u00fccklich trennen. Das \u00fcber Primary- und Replica-Shards geltende Software-Datenbanklimit nicht auf OSS \u00fcbertragen.","source_ids":["S1","S4","S5"],"internal_link_ids":[]}]},"repairs":0,"reviews":1,"issues":[],"guard":{"content_md5":"9185ebad95cda99cf462486ef30cb309","title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","excerpt":"El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.","status":"draft","featured_media":22166},"verify":{"content_md5":"9185ebad95cda99cf462486ef30cb309","title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","excerpt":"El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.","status":"draft","featured_media":22166},"row_number":1937,"created_at":"2026-11-04T13:41:49+00:00","editorial_policy":{"version":"2.1.6","max_repairs":4,"review_model_from_attempt":2},"updated_at":"2026-11-04T13:46:43+00:00","verified_at":"2026-11-04T13:46:27+00:00"},"_wh_make_research":"# Recherchebriefing: Redis maxmemory richtig dimensionieren\n\nRecherchestand: 4. November 2026  \nGeplanter Umfang des Fachartikels: 2.400\u20132.700 W\u00f6rter\n\n## Leserfrage und Ziel\n\nWie gro\u00df darf `maxmemory` bei einer Redis-Instanz sein, damit Daten, Replikation, Clients und Persistenz auch unter Last gen\u00fcgend Speicher haben? Der Artikel soll zeigen, warum der Wert weder dem verf\u00fcgbaren RAM noch der reinen Nutzdatengr\u00f6\u00dfe entspricht und wie sich ein belastbares Budget aus Beobachtungen ableiten l\u00e4sst.\n\nZielgruppe sind Administratoren und Entwickler mit Grundkenntnissen in Redis und Linux. Vorausgesetzt werden Zugang zu lesenden Redis-Diagnosebefehlen und zu Metriken des Hosts beziehungsweise Containers. Der Schwerpunkt liegt auf Redis Open Source. Redis Software, Redis Cloud und Angebote f\u00fcr Redis Hosting m\u00fcssen getrennt betrachtet werden: Deren Speicherlimits und administrative M\u00f6glichkeiten k\u00f6nnen anders definiert sein. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/rs\/databases\/memory-performance\/memory-limit\/?utm_source=openai))\n\n## Gesicherte Funktionsweise\n\n### Was `maxmemory` tats\u00e4chlich begrenzt\n\n`maxmemory` ist ein Schwellenwert f\u00fcr die Redis-Speichersteuerung, keine harte Obergrenze f\u00fcr den gesamten Prozess- oder Containerverbrauch. Bei speichervergr\u00f6\u00dfernden Befehlen pr\u00fcft Redis den Verbrauch und versucht gegebenenfalls, entsprechend der Eviction-Policy Schl\u00fcssel zu entfernen. Ein einzelner gro\u00dfer Befehl kann die Schwelle vor\u00fcbergehend deutlich \u00fcberschreiten. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai))\n\nF\u00fcr die Eviction werden bestimmte Speicheranteile nicht mitgerechnet. Dazu geh\u00f6ren insbesondere tempor\u00e4re Replikations- und AOF-Puffer. Redis weist ihren aktuellen Umfang mit `mem_not_counted_for_evict` aus. Dieser Wert schwankt; ein einzelner Messpunkt ist deshalb keine sichere Reservesch\u00e4tzung. Nicht alle Replikations- oder Client-Speicherbereiche d\u00fcrfen pauschal als \u201eau\u00dferhalb von maxmemory\u201c bezeichnet werden. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai))\n\nDie wichtige Abgrenzung f\u00fcr den Artikel:\n\n- `used_memory` beschreibt von Redis \u00fcber den Allocator belegten Speicher, nicht nur Nutzdaten.\n- `used_memory_rss` beschreibt den residenten Speicher des Redis-Prozesses aus Betriebssystemsicht.\n- `mem_not_counted_for_evict` ist ein in `used_memory` enthaltener Anteil, der f\u00fcr die Eviction-Pr\u00fcfung nicht ber\u00fccksichtigt wird.\n- Host- oder Containergrenzen betreffen mehr als die Eviction-Rechnung und gegebenenfalls mehr als den Redis-Hauptprozess. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\n### Warum RSS und Persistenz Reserve ben\u00f6tigen\n\nFreigegebener Redis-Speicher wird nicht zwingend sofort an das Betriebssystem zur\u00fcckgegeben. Nach Lastspitzen kann RSS deshalb hoch bleiben, obwohl `used_memory` gesunken ist. Das Verh\u00e4ltnis `mem_fragmentation_ratio` umfasst neben Fragmentierung auch weitere Prozessanteile; es ist kein reiner Fragmentierungsprozentsatz. F\u00fcr eine Diagnose geh\u00f6ren Verlauf, `allocator_*`-Metriken und Lastgeschichte zusammen. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\nBei RDB-Snapshots und AOF-Rewrites nutzt Redis einen Kindprozess und Copy-on-Write. Werden w\u00e4hrenddessen viele Speicherseiten ver\u00e4ndert, steigt der tats\u00e4chliche Speicherbedarf. Die Redis-Administration nennt f\u00fcr schreibintensive Anwendungen im Extrem bis zum Doppelten des normalerweise genutzten Speichers. Das ist eine Warnung f\u00fcr die Kapazit\u00e4tsplanung, kein pauschaler Multiplikator f\u00fcr jeden Betrieb. Prozess-RSS-Werte von Eltern- und Kindprozess d\u00fcrfen wegen gemeinsam genutzter Seiten nicht einfach addiert werden; f\u00fcr die Grenze ist die passende Host- oder Containerbeobachtung entscheidend. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/admin\/?utm_source=openai))\n\n### Replikation gesondert planen\n\nEin Replica h\u00e4lt grunds\u00e4tzlich eine Kopie des Datenbestands und ben\u00f6tigt daher eigenes RAM. Standardm\u00e4\u00dfig ignoriert ein Replica `maxmemory` f\u00fcr eigene Evictions; der Primary entscheidet \u00fcber Evictions und repliziert die L\u00f6schungen. Ein Replica kann dennoch mehr Speicher als sein konfigurierter Wert ben\u00f6tigen, etwa durch unterschiedliche Buffer oder Datenstrukturen. Nach einer Promotion \u00e4ndert sich seine Rolle: Die Dimensionierung muss auch den Betrieb als Primary ber\u00fccksichtigen. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/replication\/?utm_source=openai))\n\nSeit Redis 7.0 teilen Replica-Buffer Speicher mit dem Replikations-Backlog. `mem_clients_slaves` kann daher null anzeigen, ohne dass Replikation keinen Speicher verbraucht. Backlog und Replica-Buffer nicht anhand einzelner Felder doppelt addieren. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\n## Dimensionierung als Arbeitsmodell\n\nF\u00fcr jede Instanz beziehungsweise jeden Container zuerst die tats\u00e4chlich verf\u00fcgbare Speichergrenze bestimmen. Davon werden Reserven f\u00fcr andere Prozesse und Betriebssystemanteile, zus\u00e4tzliche RSS-\/Allocator-Effekte, nicht f\u00fcr Eviction gez\u00e4hlte Buffer, Persistenzspitzen und Sicherheitsabstand abgeleitet. \u00dcbrig bleibt ein vorl\u00e4ufiges `maxmemory`-Budget.\n\nDiese Rechnung ist ein Planungsmodell, keine Redis-interne Gleichung. Komponenten m\u00fcssen auf derselben Bezugsgr\u00f6\u00dfe beruhen und d\u00fcrfen nicht doppelt gez\u00e4hlt werden. Insbesondere ist `mem_not_counted_for_evict` bereits Teil von `used_memory`; wer mit dem beobachteten gesamten RSS oder Containerverbrauch rechnet, darf ihn nicht nochmals ungepr\u00fcft addieren. Gleichzeitig muss das resultierende Budget gen\u00fcgend Platz f\u00fcr Datensatz und Redis-Overhead innerhalb der Eviction-Rechnung lassen. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\nSinnvolle Vorgehensweise f\u00fcr den Artikel:\n\n1. Host-, Container- und Anbietergrenzen sowie andere Verbraucher erfassen.\n2. \u00dcber repr\u00e4sentative Zeitr\u00e4ume Normalbetrieb, Schreibspitzen und Persistenzl\u00e4ufe beobachten.\n3. Primary und jedes Replica separat auswerten; Failover-Szenario einbeziehen.\n4. Einen vorl\u00e4ufigen Wert mit Reserve festlegen und in einer isolierten Testumgebung unter vergleichbarer Last pr\u00fcfen.\n5. Auslastung, Evictions, OOM-Fehler und tats\u00e4chlichen Speicherverbrauch dauerhaft \u00fcberwachen und das Budget nach Last\u00e4nderungen neu bewerten.\n\n## Relevante Praxisf\u00e4lle und Entscheidungen\n\n**Reiner Cache:** Sind alle Daten aus einer anderen Quelle wiederherstellbar, kann `allkeys-lru` eine passende Wahl sein. Evictions sind dann Teil des Betriebs; steigende Evictions k\u00f6nnen aber Cache-Trefferrate und Backend-Last verschlechtern. LRU und LFU arbeiten n\u00e4herungsweise, nicht als exakte globale Sortierung. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai))\n\n**Nicht beliebig l\u00f6schbare Daten:** Bei `noeviction` entfernt Redis keine Schl\u00fcssel, um Platz zu schaffen. Speichervergr\u00f6\u00dfernde Schreibbefehle k\u00f6nnen mit OOM-Fehlern scheitern; die Anwendung braucht daf\u00fcr eine Fehlerstrategie. `noeviction` ist weder Persistenz noch eine Garantie gegen Betriebssystem-OOM. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/errors\/common\/oom\/?utm_source=openai))\n\n**Gemischter Datenbestand:** `volatile-*`-Policies w\u00e4hlen nur Schl\u00fcssel mit Ablaufzeit aus. Gibt es keine geeigneten Schl\u00fcssel mehr, kann Redis wie bei `noeviction` keine ausreichende Kapazit\u00e4t freimachen. Ob eine gemeinsame Instanz f\u00fcr Cache und wichtige Daten sinnvoll ist, h\u00e4ngt daher auch von TTL-Disziplin und Fehlertoleranz ab. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai))\n\n**Schreiblast mit Persistenz und Replikation:** Hier m\u00fcssen Buffer-Schwankungen und Copy-on-Write-Spitzen gemeinsam in realistischen Zeitfenstern betrachtet werden. Als Alternative zu einer gr\u00f6\u00dferen Reserve kommen mehr RAM, Lastverteilung oder eine Anpassung der Architektur infrage; keine Ma\u00dfnahme beseitigt automatisch alle Spitzen. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/admin\/?utm_source=openai))\n\n**Redis Hosting:** Pr\u00fcfen, ob der Anbieter eine Instanzgrenze, Containergrenze oder ein anders definiertes Datenbanklimit ausweist, welche Metriken verf\u00fcgbar sind und ob Replikate im gebuchten Speicher enthalten sind. Redis-Software-Datenbanklimits beispielsweise gelten \u00fcber Primary- und Replica-Shards hinweg; das darf nicht ungepr\u00fcft auf Redis OSS \u00fcbertragen werden. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/rs\/databases\/memory-performance\/memory-limit\/?utm_source=openai))\n\n## Sichere Diagnosebeispiele\n\nDie folgenden Beispiele sind lesend; sie ver\u00e4ndern keine Konfiguration. Ausgabe und verf\u00fcgbare Felder h\u00e4ngen von Version, Berechtigungen und Hosting-Angebot ab.\n\nRedis-CLI: `INFO memory`  \nF\u00fcr `used_memory`, `used_memory_rss`, `maxmemory`, `maxmemory_policy` und `mem_not_counted_for_evict`.\n\nRedis-CLI: `INFO stats`  \nF\u00fcr Betriebsz\u00e4hler wie Evictions; \u00c4nderungen \u00fcber die Zeit sind aussagekr\u00e4ftiger als ein isolierter Z\u00e4hlerstand.\n\nRedis-CLI: `INFO persistence`  \nZur Einordnung von Persistenzaktivit\u00e4t und verf\u00fcgbaren Copy-on-Write-Metriken.\n\nRedis-CLI: `INFO replication`  \nZur Pr\u00fcfung der Rolle und des Replikationszustands.\n\nRedis-CLI: `MEMORY STATS`  \nF\u00fcr zus\u00e4tzliche Einblicke in die Speicherverteilung. Die Interpretation der Felder muss zur eingesetzten Version passen. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n\nBei vielen Clients kann `maxmemory-clients` als separate Schutzma\u00dfnahme relevant sein: Redis kann dann Clients mit hohem Speicherverbrauch trennen. Das ist keine Begrenzung f\u00fcr alle Replikationsverbindungen und ersetzt keine Gesamtbudgetierung. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/clients\/?utm_source=openai))\n\n## Typische Fehler und Tabellenplanung\n\nEine Tabelle sollte die Metriken, ihre Bedeutung, ihre Grenzen und die jeweils passende Beobachtungsebene gegen\u00fcberstellen: Redis-Allocator, Prozess-RSS sowie Host oder Container. Eine zweite Tabelle kann `noeviction`, `allkeys-lru` und eine `volatile-*`-Policy anhand von Eignung, Verlustverhalten und Fehlerfall vergleichen.\n\nZu vermeiden sind insbesondere:\n\n- `maxmemory` auf das gesamte Containerlimit setzen.\n- `used_memory` mit reinen Nutzdaten gleichsetzen.\n- Einen aktuellen Bufferwert als dauerhaften Spitzenwert verwenden.\n- Fragmentierungsquote oder Copy-on-Write pauschal als festen Prozentsatz annehmen.\n- Replikate und Failover nicht separat dimensionieren.\n- `volatile-*` w\u00e4hlen, ohne ausreichend Schl\u00fcssel mit TTL zu haben.\n- Redis OSS, Redis Software und Hosting-Grenzen vermischen.\n\nEin Chart ist auf Basis dieser Recherche nicht erforderlich: Es liegen keine geeigneten workloadbezogenen Messreihen vor. Falls sp\u00e4ter ein Zahlenbeispiel erg\u00e4nzt wird, muss es ausdr\u00fccklich als illustrativ und nicht als Messung gekennzeichnet sein.\n\n## Quelldokumente f\u00fcr die sp\u00e4tere Ausarbeitung\n\n- Redis-Dokumentation, \u201eKey eviction\u201c: Schwelle, Buffer und Policies. ([redis.io](https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai))\n- Redis-Befehlsreferenz, \u201eINFO\u201c: Definition und Versionshinweise der Speicherfelder. ([redis.io](https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai))\n- Redis-Dokumentation, \u201eRedis replication\u201c: Replica-Verhalten und `maxmemory`. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/replication\/?utm_source=openai))\n- Redis-Dokumentation, \u201eRedis administration\u201c und \u201eRedis persistence\u201c: Speicherreserve, Fork und Copy-on-Write. ([redis.io](https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/admin\/?utm_source=openai))\n\nF\u00fcr den Folgeartikel sollten die tats\u00e4chlich eingesetzte Redis-Version und die Anbietergrenzen nochmals konkret gepr\u00fcft werden. Es wurden keine bestehenden S- oder I-Kennungen mitgeliefert; daher werden hier keine erfunden.","_wh_make_sources":{"S1":{"id":"S1","url":"https:\/\/redis.io\/docs\/latest\/operate\/rs\/databases\/memory-performance\/memory-limit\/?utm_source=openai","title":"L\u00edmites de memoria de la base de datos | Documentaci\u00f3n"},"S2":{"id":"S2","url":"https:\/\/redis.io\/docs\/latest\/develop\/reference\/eviction\/?utm_source=openai","title":"Desalojo de Key | Documentos"},"S3":{"id":"S3","url":"https:\/\/redis.io\/docs\/latest\/commands\/info\/?utm_source=openai","title":"INFORMACI\u00d3N | Documentos"},"S4":{"id":"S4","url":"https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/admin\/?utm_source=openai","title":"Administraci\u00f3n de Redis | Documentaci\u00f3n"},"S5":{"id":"S5","url":"https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/replication\/?utm_source=openai","title":"Replicaci\u00f3n de Redis | Documentaci\u00f3n"},"S6":{"id":"S6","url":"https:\/\/redis.io\/docs\/latest\/develop\/reference\/errors\/common\/oom\/?utm_source=openai","title":"Error OOM | Documentaci\u00f3n"},"S7":{"id":"S7","url":"https:\/\/redis.io\/docs\/latest\/develop\/reference\/clients\/?utm_source=openai","title":"Gesti\u00f3n del cliente de Redis | Documentaci\u00f3n"}},"_wh_make_usage":{"research":{"input_tokens":13202,"output_tokens":2662,"response_id":"resp_0477cf8546c3325b016aeb361fbf2087d2a37241280dfd8478","model":"gpt-6.1-terra","search_calls":1},"plan_56a538c4b74c5f95a41bc250d37cbf22":{"input_tokens":5783,"output_tokens":1203,"response_id":"resp_0e7a3fa2e1c42137016aeb36476aec87d2b4c4667932c83f07","model":"gpt-6.1-terra","search_calls":0},"part1_705a7dfceba1d20df0f23b9fd2ae4a0c":{"input_tokens":8201,"output_tokens":1923,"response_id":"resp_0bc3f07cf1a8f493016aeb36595bd487d2827ee38c8f05879b","model":"gpt-6.1-terra","search_calls":0},"part2_b135231ad0c155adefc805c017852707":{"input_tokens":8225,"output_tokens":2260,"response_id":"resp_05d2c49f94323075016aeb3674b4b087d2917adeb784fefbd9","model":"gpt-6.1-terra","search_calls":0},"part3_53003776155a329a5e0f6f11290878cb":{"input_tokens":8222,"output_tokens":1852,"response_id":"resp_0503a8e3a6ebef82016aeb3690917087d2a078154aa4bb1e0c","model":"gpt-6.1-terra","search_calls":0},"package_8a16a91cd2f5131ca4c9353d525810d4":{"input_tokens":15729,"output_tokens":1660,"response_id":"resp_0fedc2bfbf6dc272016aeb36afcbd087d2b8414f8ff3d2af49","model":"gpt-6.1-terra","search_calls":0},"review_afcdaa6816fc080ec4fc305a2d31d891":{"input_tokens":34638,"output_tokens":595,"response_id":"resp_03f06b524515eecf016aeb36c6a09087d2a26a9f97cb56a45e","model":"gpt-6.1-sol","search_calls":3},"image_hero":{"input_tokens":190,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail1":{"input_tokens":169,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0},"image_detail2":{"input_tokens":175,"output_tokens":1372,"response_id":"","model":"gpt-image-2.5-flare","search_calls":0}},"_wh_make_last_error":"","_wh_make_write_intent":{"before":{"content_md5":"2bd8a87de070ea1b93a15bc536191e5f","title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","excerpt":"El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.","status":"draft","featured_media":0},"expected":{"content_md5":"9185ebad95cda99cf462486ef30cb309","title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","excerpt":"El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.","status":"draft","featured_media":22166},"at":"2026-11-04T13:46:15+00:00"},"_wh_make_design_version":"2.1.19","rank_math_title":"Redis maxmemory richtig dimensionieren","_wh_make_doc":{"title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis: reservas de memoria para datos y funcionamiento","slug":"dimensionar-correctamente-el-parametro-maxmemory-de-redis","excerpt":"El par\u00e1metro \u00abmaxmemory\u00bb de Redis no es un l\u00edmite estricto de RAM. Descubre c\u00f3mo tener en cuenta los datos, la replicaci\u00f3n, los picos de persistencia y los l\u00edmites de los contenedores a la hora de planificar la memoria.","seo":{"title":"Dimensionar correctamente el par\u00e1metro \u00abmaxmemory\u00bb de Redis","description":"Planificar el par\u00e1metro \u00abmaxmemory\u00bb de Redis con un margen de seguridad: comprender los valores de memoria, tener en cuenta las r\u00e9plicas y comprobar los picos de persistencia bajo carga.","focus_keyword":"redis maxmemory"},"lead":[{"kind":"text","text":"Setze ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" nicht mit dem verf\u00fcgbaren RAM gleich: Der Wert steuert die Eviction, begrenzt aber nicht den gesamten Prozess- oder Containerverbrauch. Plane neben Daten und Redis-Overhead auch Platz f\u00fcr Buffer, Allocator-Effekte und Persistenzspitzen ein. ","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"text","text":"Ein belastbarer Ausgangswert entsteht aus der ","ref":""},{"kind":"strong","text":"tats\u00e4chlichen Speichergrenze","ref":""},{"kind":"text","text":" und Verbrauchsverl\u00e4ufen unter repr\u00e4sentativer Last. Werte Primary und Replikate getrennt aus und \u00fcberpr\u00fcfe das Budget auch f\u00fcr einen m\u00f6glichen Rollenwechsel.","ref":""},{"kind":"citation","text":"","ref":"S5"}],"images":{"hero":{"prompt":"Sachliche redaktionelle Illustration zur Redis-Speicherplanung: Auf einer dunklen, matten Fl\u00e4che verlaufen zwei ungleich gro\u00dfe, ineinanderliegende geschlossene Konturen. Die innere Kontur steht sinnbildlich f\u00fcr die Eviction-Schwelle, der Raum bis zur \u00e4u\u00dferen Kontur f\u00fcr zus\u00e4tzlich ben\u00f6tigte Speicherreserve. Einige flache, unterschiedlich strukturierte Farbfl\u00e4chen \u00fcberlagern die innere Grenze und machen deutlich, dass beide Grenzen nicht identisch sind. Grafische Ansicht direkt von oben, reduzierte Formen in gedecktem Rostrot, Creme und Anthrazit, keine r\u00e4umlichen Beh\u00e4lter, keine Menschen. Keine Texte, Zahlen, Logos, Messwerte oder Wasserzeichen.","alt":"KI-generierte Illustration zweier ineinanderliegender Grenzen als Sinnbild f\u00fcr Eviction-Schwelle und Speicherreserve.","caption":"KI-generierte Illustration: Die Eviction-Schwelle l\u00e4sst sich nicht mit der \u00e4u\u00dferen Speichergrenze gleichsetzen.","filename_base":"redis-maxmemory-speichergrenzen-illustration","section_id":"","after_block":0},"detail1":{"prompt":"Fotografisches KI-generiertes Symbolbild zur physischen RAM-Kapazit\u00e4t: Ein einzelnes ausgebautes Arbeitsspeichermodul liegt schr\u00e4g auf einer leicht gebrauchten antistatischen Unterlage an einem schlichten Werkstattplatz. Nahaufnahme aus niedriger seitlicher Perspektive, Leiterplatte und Speicherchips plausibel erkennbar, ohne bestimmte Marke oder Produktvariante zu behaupten. Nat\u00fcrliches seitliches Tageslicht, matte Materialien und kleine Alltagsspuren, keine Menschen und keine Hochglanzbeleuchtung. Keine lesbaren Beschriftungen, Zahlen, Logos oder Wasserzeichen.","alt":"KI-generiertes Symbolbild eines ausgebauten RAM-Moduls auf einer antistatischen Unterlage.","caption":"KI-generiertes Symbolbild: Physischer Arbeitsspeicher bildet die Grundlage, ersetzt aber nicht die Planung von Persistenzreserven.","filename_base":"redis-persistenz-ram-reserve","section_id":"rss-und-persistenz","after_block":4},"detail2":{"prompt":"Sachliche redaktionelle Illustration zur Redis-Replikation: Zwei getrennte, unterschiedlich gro\u00dfe matte Rechteckfl\u00e4chen liegen nebeneinander auf hellem Hintergrund. In jeder Fl\u00e4che befindet sich eine \u00e4hnliche Gruppe kleiner geometrischer Formen als Sinnbild f\u00fcr kopierte Daten; weitere ungleiche Formen stehen f\u00fcr den jeweils eigenen Betriebsbedarf. Eine schlichte Verbindung zwischen den Fl\u00e4chen deutet die Replikation an, ohne einen exakten Speicherverbrauch oder eine technische Topologie zu behaupten. Weite asymmetrische Draufsicht, gedeckte Gr\u00fcn- und Erdt\u00f6ne, keine Menschen. Keine Texte, Zahlen, Logos, Diagrammachsen oder Wasserzeichen.","alt":"KI-generierte Illustration zweier verbundener Instanzen mit \u00e4hnlichen Datenformen und unterschiedlichem zus\u00e4tzlichem Speicherbedarf.","caption":"KI-generierte Illustration: Primary und Replica halten Datenkopien, ben\u00f6tigen aber jeweils ein eigenes Speicherbudget.","filename_base":"redis-replikation-eigene-speicherbudgets","section_id":"replikation-speicher","after_block":2}},"chart":null,"social":{"facebook":"Wie viel RAM braucht Redis neben den eigentlichen Daten? Der Leitfaden erkl\u00e4rt maxmemory, Replikationspuffer und Persistenzspitzen und zeigt, wie du eine Reserve planst.","instagram":"Redis maxmemory ist keine harte RAM-Grenze. Plane auch Replikate, Buffer und Persistenzspitzen ein \u2013 und pr\u00fcfe deine Reserve unter passender Last.","tiktok":"Redis bis zum Containerlimit bef\u00fcllen? Keine gute Speicherplanung. Erfahre, warum maxmemory Reserve f\u00fcr Buffer und Persistenz braucht.","youtube":"Redis maxmemory dimensionieren: So unterscheiden sich Eviction-Schwelle, Prozessspeicher und Containerlimit. Dazu: Replikation, Copy-on-Write und Monitoring.","threads":"maxmemory begrenzt nicht den gesamten Redis-Prozess. Entscheidend sind auch Buffer, Persistenzspitzen und die tats\u00e4chliche Containergrenze.","x":"Redis maxmemory ist keine harte RAM-Grenze. Plane Reserve f\u00fcr Buffer, RSS-Effekte und Persistenzspitzen ein und bewerte jedes Replica separat."},"avatar_script":"Wie gro\u00df darf maxmemory bei Redis sein? Nicht einfach so gro\u00df wie der verf\u00fcgbare Arbeitsspeicher. Die Einstellung steuert die Eviction, begrenzt aber nicht den gesamten Verbrauch des Prozesses oder Containers. Plane deshalb Platz f\u00fcr Redis-Overhead, schwankende Buffer und zus\u00e4tzliche Speicherseiten w\u00e4hrend der Persistenz ein. Miss den Verbrauch \u00fcber normale Last und Schreibspitzen hinweg und beobachte dabei auch die tats\u00e4chliche Containergrenze. Replikate brauchen eigene Budgets: Sie halten eine Datenkopie und m\u00fcssen nach einer Promotion auch als Primary funktionieren. Aus diesen Beobachtungen leitest du einen vorl\u00e4ufigen Wert ab und pr\u00fcfst ihn in einer isolierten Umgebung unter vergleichbarer Last. \u00dcberwache anschlie\u00dfend Evictions, Schreibfehler und den Abstand zur Speichergrenze.","version_note":"Recherche und Produktabgrenzung auf Stand 4. November 2026. Beispiele beziehen sich auf Redis Open Source; verf\u00fcgbare Metriken und Hosting-Grenzen h\u00e4ngen von Version und Anbieter ab.","sections":[{"id":"maxmemory-grundlagen","heading":"Was maxmemory tats\u00e4chlich begrenzt","blocks":[{"type":"paragraph","runs":[{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" legt in Redis Open Source eine ","ref":""},{"kind":"strong","text":"Eviction-Schwelle","ref":""},{"kind":"text","text":" fest, keine harte Obergrenze f\u00fcr den Redis-Prozess oder seinen Container. Erreicht der f\u00fcr die Speichersteuerung relevante Verbrauch die Schwelle, versucht Redis abh\u00e4ngig von der gew\u00e4hlten Policy Schl\u00fcssel zu entfernen. Bei einer Policy ohne Eviction k\u00f6nnen speichervergr\u00f6\u00dfernde Schreibbefehle stattdessen fehlschlagen.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Kennzahl ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" umfasst den von Redis \u00fcber seinen Allocator belegten Speicher. Dazu geh\u00f6ren nicht nur die eigentlichen Werte deiner Anwendung, sondern auch Verwaltungsstrukturen und weitere Redis-Speicherbereiche. Wer das Limit allein aus der gesch\u00e4tzten Gr\u00f6\u00dfe der Nutzdaten ableitet, l\u00e4sst diesen Overhead unber\u00fccksichtigt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein Teil von ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" wird bei der Eviction-Pr\u00fcfung ausgenommen: ","ref":""},{"kind":"code","text":"mem_not_counted_for_evict","ref":""},{"kind":"text","text":" weist insbesondere tempor\u00e4re Replikations- und AOF-Puffer aus. Diese Puffer ben\u00f6tigen trotzdem realen Speicher. Der Wert ist bereits in ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" enthalten und darf deshalb nicht ohne Pr\u00fcfung ein zweites Mal zu dieser Kennzahl addiert werden.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Daraus folgt nicht, dass s\u00e4mtliche Client- oder Replikationsspeicher au\u00dferhalb der Eviction-Rechnung liegen. Ein einzelner gro\u00dfer Befehl kann die Schwelle zudem vor\u00fcbergehend deutlich \u00fcberschreiten. Setzt du ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" auf das volle Containerlimit, bleibt f\u00fcr solche Ausschl\u00e4ge und zus\u00e4tzlichen Prozessverbrauch kein verl\u00e4sslicher Spielraum.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Planung sind daher zwei Fragen getrennt zu beantworten: Wie viel Platz brauchen Datensatz und Redis-Overhead innerhalb der Speichersteuerung? Und wie viel Reserve ben\u00f6tigt die gesamte Laufzeitumgebung dar\u00fcber hinaus? Erst beide Perspektiven zusammen zeigen, ob ein gew\u00e4hlter Wert unter der tats\u00e4chlichen Speichergrenze plausibel ist.","ref":""}]}]},{"id":"rss-und-persistenz","heading":"RSS, Allocator und Persistenzspitzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Nach einer Lastspitze kann ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" sinken, w\u00e4hrend ","ref":""},{"kind":"code","text":"used_memory_rss","ref":""},{"kind":"text","text":" hoch bleibt: Redis hat dann zwar Speicher \u00fcber den Allocator freigegeben, dieser wurde aber nicht zwingend sofort an das Betriebssystem zur\u00fcckgegeben. RSS beschreibt den residenten Speicher des Prozesses aus Betriebssystemsicht und ist deshalb eine andere Beobachtungsebene.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Angenommen, ein Cache w\u00e4chst w\u00e4hrend einer Aktion stark und viele Schl\u00fcssel laufen danach ab. Der kleinere Redis-Speicherwert bedeutet nicht automatisch, dass der Container sofort entsprechend viel freie Reserve zur\u00fcckerh\u00e4lt. F\u00fcr die n\u00e4chste Spitze ist daher der Verlauf des tats\u00e4chlichen Verbrauchs wichtiger als die Annahme, dass freigegebener Speicher unmittelbar verschwindet.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch ","ref":""},{"kind":"code","text":"mem_fragmentation_ratio","ref":""},{"kind":"text","text":" ist kein reiner Fragmentierungsprozentsatz. Das Verh\u00e4ltnis umfasst weitere Prozessanteile; f\u00fcr die Ursachenanalyse solltest du es zusammen mit den verf\u00fcgbaren ","ref":""},{"kind":"code","text":"allocator_*","ref":""},{"kind":"text","text":"-Metriken und der Lastgeschichte betrachten. Aus einem einzelnen Verh\u00e4ltnis l\u00e4sst sich keine allgemein g\u00fcltige Reserve ableiten.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei RDB-Snapshots und AOF-Rewrites erzeugt Redis einen Kindprozess. Durch ","ref":""},{"kind":"strong","text":"Copy-on-Write","ref":""},{"kind":"text","text":" k\u00f6nnen zus\u00e4tzlich physische Speicherseiten ben\u00f6tigt werden, wenn w\u00e4hrend des Persistenzlaufs Seiten ver\u00e4ndert werden. Je st\u00e4rker und breiter die Schreiblast w\u00e4hrenddessen ist, desto wichtiger ist es, diese Phase bei der Kapazit\u00e4tsplanung zu beobachten.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Die Redis-Administration nennt f\u00fcr schreibintensive Anwendungen im Extrem einen Bedarf bis zum Doppelten des normalerweise genutzten Speichers. Das ist eine Warnung f\u00fcr ung\u00fcnstige Lastverh\u00e4ltnisse, kein pauschaler Multiplikator. Addiere au\u00dferdem nicht einfach die RSS-Werte von Eltern- und Kindprozess: Gemeinsam genutzte Seiten w\u00fcrden mehrfach gez\u00e4hlt; relevant ist die passende Host- oder Containerbeobachtung.","ref":""},{"kind":"citation","text":"","ref":"S4"}]}]},{"id":"replikation-speicher","heading":"Replikate brauchen eigene Budgets","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein Replica h\u00e4lt grunds\u00e4tzlich eine Kopie des Datenbestands und ben\u00f6tigt daf\u00fcr eigenes RAM. Primary und Replica sind deshalb getrennte Speicherverbraucher: Eine Reserve auf dem Primary schafft keinen Platz im Container des Replica. Plane jedes Mitglied anhand seiner eigenen Grenze und seines beobachteten Verbrauchs.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Standardm\u00e4\u00dfig ignoriert ein Replica sein konfiguriertes ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" f\u00fcr eigene Evictions. Der Primary entscheidet \u00fcber das Entfernen von Schl\u00fcsseln und repliziert die L\u00f6schungen. Trotzdem k\u00f6nnen sich die Speicherst\u00e4nde unterscheiden, etwa wegen abweichender Puffer oder Datenstrukturen; derselbe Grenzwert garantiert daher keine identische Auslastung.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer ","ref":""},{"kind":"strong","text":"Promotion","ref":""},{"kind":"text","text":" \u00fcbernimmt das fr\u00fchere Replica die Primary-Rolle. Pr\u00fcfe deshalb nicht nur, ob es als lesende Kopie gen\u00fcgend Platz hat, sondern auch, ob seine Speichergrenze und Konfiguration den Betrieb als Primary tragen. Dazu geh\u00f6ren insbesondere Schreiblast, Replikationsverbindungen und die dann geltende Eviction-Steuerung.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Seit Redis 7.0 teilen sich Replica-Buffer und Replikations-Backlog Speicher. ","ref":""},{"kind":"code","text":"mem_clients_slaves","ref":""},{"kind":"text","text":" kann deshalb null anzeigen, obwohl die Replikation Speicher beansprucht. Interpretiere das Feld nicht isoliert und addiere Backlog und Replica-Buffer nicht ungepr\u00fcft als vollst\u00e4ndig getrennte Bereiche.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Neben dem Speicherverbrauch ist der Fortschritt der Daten\u00fcbertragung f\u00fcr den Betrieb relevant: Eine Verz\u00f6gerung zeigt eine andere Eigenschaft als die Gr\u00f6\u00dfe eines Puffers. Wie sich Replikationsstand und R\u00fcckstand einordnen lassen, erkl\u00e4rt der Beitrag zum ","ref":""},{"kind":"internal_link","text":"Redis Replication Offset","ref":"I1"},{"kind":"text","text":". F\u00fcr die Speicherreserve bleiben dennoch die tats\u00e4chlichen Verbrauchsverl\u00e4ufe jeder Instanz entscheidend.","ref":""}]}]},{"id":"metriken-erfassen","heading":"Speicher auf drei Ebenen erfassen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr die Dimensionierung brauchst du Werte aus Redis und von der Umgebung, in der die Instanz l\u00e4uft. Die ","ref":""},{"kind":"strong","text":"Beobachtungsebene","ref":""},{"kind":"text","text":" entscheidet dar\u00fcber, was eine Zahl aussagt: Allocator-Belegung, Prozess-RSS und Containerverbrauch sind unterschiedliche Gr\u00f6\u00dfen und lassen sich nicht einfach addieren.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"table","caption":"Speicherwerte und ihre Aussagegrenzen","headers":["Gr\u00f6\u00dfe","Ebene und Bedeutung","Grenze der Interpretation"],"rows":[["used_memory","Von Redis \u00fcber den Allocator belegter Speicher","Enth\u00e4lt Redis-Overhead und ist nicht identisch mit den reinen Nutzdaten."],["used_memory_rss","Residenter Speicher des Redis-Prozesses aus Betriebssystemsicht","Kann nach Lastspitzen hoch bleiben; ist nicht mit used_memory gleichzusetzen."],["mem_not_counted_for_evict","Anteil von used_memory, der bei der Eviction-Pr\u00fcfung ausgenommen wird","Schwankt und ist bereits in used_memory enthalten."],["Host- oder Containerverbrauch","Verbrauch an der relevanten Betriebsgrenze","Kann neben Redis weitere Verbraucher umfassen; die Definition h\u00e4ngt von der Umgebung ab."]],"source_ids":["S3"]},{"type":"paragraph","runs":[{"kind":"text","text":"Mit ","ref":""},{"kind":"code","text":"INFO memory","ref":""},{"kind":"text","text":" liest du unter anderem die Redis-Speicherwerte und die konfigurierte Policy. ","ref":""},{"kind":"code","text":"MEMORY STATS","ref":""},{"kind":"text","text":" erg\u00e4nzt Details zur Speicherverteilung. Beide Befehle sind lesend; welche Felder verf\u00fcgbar sind, h\u00e4ngt von Redis-Version, Berechtigungen und Hosting-Angebot ab.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr den zeitlichen Zusammenhang pr\u00fcfst du au\u00dferdem ","ref":""},{"kind":"code","text":"INFO persistence","ref":""},{"kind":"text","text":" auf Persistenzaktivit\u00e4t und verf\u00fcgbare Copy-on-Write-Werte. ","ref":""},{"kind":"code","text":"INFO replication","ref":""},{"kind":"text","text":" zeigt Rolle und Replikationszustand. Erfasse diese Angaben f\u00fcr Primary und Replica getrennt, damit ein Rollenwechsel oder eine Synchronisation bei der Auswertung erkennbar bleibt.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ein einzelner Wert zeigt weder die typische Auslastung noch die notwendige Spitzenreserve. Sammle deshalb Zeitreihen \u00fcber normalen Betrieb, Schreibspitzen und Persistenzl\u00e4ufe und ordne ihnen den gleichzeitig beobachteten Host- oder Containerverbrauch zu. So erkennst du auch, ob ein hoher RSS-Wert eine aktuelle Last begleitet oder nach einer fr\u00fcheren Spitze bestehen bleibt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]}]},{"id":"budget-rechnen","heading":"Ein belastbares Speicherbudget berechnen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ausgangspunkt ist die tats\u00e4chlich wirksame ","ref":""},{"kind":"strong","text":"Speichergrenze","ref":""},{"kind":"text","text":": Bei einem Container kann sie niedriger sein als der RAM des Hosts. Ermittle, welche anderen Prozesse und Betriebsanteile dieselbe Grenze beanspruchen. Was ihnen vorbehalten ist, steht Redis nicht f\u00fcr Daten oder Spitzen zur Verf\u00fcgung.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Ziehe anschlie\u00dfend Reserven f\u00fcr zus\u00e4tzliche RSS- und Allocator-Effekte, nicht f\u00fcr Eviction gez\u00e4hlte Buffer, Persistenzspitzen und einen Sicherheitsabstand ab. Das Ergebnis ist ein vorl\u00e4ufiges ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":"-Budget, keine Redis-interne Gleichung. Die Reserven m\u00fcssen zur gleichen Grenze und zu realistisch gleichzeitig auftretenden Lastzust\u00e4nden passen.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Illustratives Rechenbeispiel, keine Messung: Von einer Containergrenze von 8 GiB werden 0,5 GiB f\u00fcr andere Verbraucher, 0,5 GiB f\u00fcr zus\u00e4tzliche RSS-Effekte, 0,5 GiB f\u00fcr aus der Eviction-Rechnung ausgenommene Buffer, 1 GiB f\u00fcr eine Persistenzspitze und 0,5 GiB Sicherheitsabstand abgezogen. Als vorl\u00e4ufiger Wert bleiben 5 GiB f\u00fcr ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":".","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Diese Zahlen sind keine Empfehlung f\u00fcr eine konkrete Instanz. Das Beispiel setzt voraus, dass die angesetzten Reserven zus\u00e4tzliche, nicht \u00fcberlappende Beitr\u00e4ge zur Containergrenze beschreiben. Gerade bei einem Persistenzlauf k\u00f6nnen gemeinsame Speicherseiten und Copy-on-Write die Zuordnung erschweren; eine blo\u00dfe Addition der RSS-Werte von Eltern- und Kindprozess w\u00e4re daf\u00fcr ungeeignet.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Vermeide ","ref":""},{"kind":"strong","text":"Doppelz\u00e4hlungen","ref":""},{"kind":"text","text":": ","ref":""},{"kind":"code","text":"mem_not_counted_for_evict","ref":""},{"kind":"text","text":" steckt bereits in ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":". Wenn du vom beobachteten gesamten RSS oder Containerverbrauch ausgehst, darfst du diesen Bufferanteil nicht ungepr\u00fcft noch einmal addieren. Im verbleibenden Eviction-Budget m\u00fcssen sowohl der Datensatz als auch der mitgez\u00e4hlte Redis-Overhead Platz finden; pr\u00fcfe den Ansatz anschlie\u00dfend unter vergleichbarer Last.","ref":""},{"kind":"citation","text":"","ref":"S2"},{"kind":"citation","text":"","ref":"S3"}]}]},{"id":"eviction-vergleichen","heading":"Eviction-Policies im Praxisvergleich","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Die ","ref":""},{"kind":"strong","text":"Eviction-Policy","ref":""},{"kind":"text","text":" bestimmt, wie Redis bei Speicherknappheit auf schreibende Befehle reagiert. Sie ersetzt keine Kapazit\u00e4tsplanung: Selbst eine passende Policy ben\u00f6tigt Reserven au\u00dferhalb der Eviction-Rechnung. Die Entscheidung h\u00e4ngt vor allem davon ab, welche Schl\u00fcssel verloren gehen d\u00fcrfen und wie die Anwendung auf Fehler reagiert.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"table","caption":"Policies nach Einsatzzweck und Verhalten bei Speicherknappheit","headers":["Policy","Typische Eignung","Verlust und Fehlerfall"],"rows":[["noeviction","Daten, die nicht zur Platzgewinnung entfernt werden sollen","Keine Eviction zur Platzgewinnung; speichervergr\u00f6\u00dfernde Schreibbefehle k\u00f6nnen mit OOM scheitern."],["allkeys-lru","Cache mit wiederherstellbaren Daten","Schl\u00fcssel k\u00f6nnen nach n\u00e4herungsweisem LRU entfernt werden; dadurch entstehen Cache-Misses."],["volatile-*","Bestand, bei dem nur Schl\u00fcssel mit Ablaufzeit zur Eviction vorgesehen sind","Nur Schl\u00fcssel mit TTL sind Kandidaten; fehlen geeignete Kandidaten, kann Platz nicht ausreichend freigemacht werden."]],"source_ids":["S2","S6"]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem reinen Cache kann ","ref":""},{"kind":"code","text":"allkeys-lru","ref":""},{"kind":"text","text":" passen, wenn sich entfernte Eintr\u00e4ge aus einer anderen Quelle neu aufbauen lassen. LRU ist in Redis eine N\u00e4herung und keine exakte globale Sortierung. H\u00e4ufige Evictions k\u00f6nnen mehr Zugriffe auf das Backend ausl\u00f6sen; deshalb sind nicht nur freie Bytes, sondern auch Cache-Trefferrate und Backend-Kapazit\u00e4t wichtig.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"F\u00fcr nicht beliebig l\u00f6schbare Daten ist ","ref":""},{"kind":"code","text":"noeviction","ref":""},{"kind":"text","text":" eine andere Entscheidung: Die Anwendung muss fehlgeschlagene Schreibvorg\u00e4nge behandeln k\u00f6nnen, statt stillschweigend mit erfolgreicher Speicherung zu rechnen. Die Policy ist weder Persistenz noch Schutz vor einem OOM auf Betriebssystem- oder Containerebene.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei gemischten Best\u00e4nden ist die ","ref":""},{"kind":"strong","text":"TTL-Disziplin","ref":""},{"kind":"text","text":" entscheidend: Eine ","ref":""},{"kind":"code","text":"volatile-*","ref":""},{"kind":"text","text":"-Policy kann nur Schl\u00fcssel mit Ablaufzeit ausw\u00e4hlen. Wenn zu wenige geeignete Kandidaten vorhanden sind, sch\u00fctzt eine TTL allein nicht vor Schreibfehlern. Pr\u00fcfe deshalb, ob Cache und wichtige Daten wirklich dieselbe Instanz und Fehlerstrategie teilen sollten.","ref":""},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Session-Daten verdeutlichen den Zielkonflikt: Ein entfernter Eintrag kann f\u00fcr Nutzer den Verlust eines Sitzungszustands bedeuten, auch wenn die Anwendung technisch weiterl\u00e4uft. Bewerte die Folgen und Wiederherstellbarkeit vor der Policy-Wahl; zus\u00e4tzliche Grundlagen bietet der Beitrag zum ","ref":""},{"kind":"internal_link","text":"Session-Management mit Redis und anderen Speichern","ref":"I3"},{"kind":"text","text":".","ref":""}]}]},{"id":"betrieb-ueberwachen","heading":"Reserve unter Last \u00fcberpr\u00fcfen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Ein berechneter Wert f\u00fcr ","ref":""},{"kind":"code","text":"maxmemory","ref":""},{"kind":"text","text":" ist zun\u00e4chst ein Ausgangspunkt. Pr\u00fcfe ihn in einer isolierten Umgebung mit vergleichbarer Redis-Version, Datenstruktur und Speichergrenze. Die Last sollte nicht nur den gew\u00f6hnlichen Betrieb abbilden, sondern auch Schreibspitzen und Phasen, in denen Persistenz und Replikation gleichzeitig aktiv sind.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Beobachte dabei den ","ref":""},{"kind":"strong","text":"Containerverbrauch","ref":""},{"kind":"text","text":" beziehungsweise die passende Host-Metrik ebenso wie Redis-Speicherwerte. Halte fest, wann ein Snapshot oder AOF-Rewrite l\u00e4uft und ob ein Replica synchronisiert wird. Entscheidend ist, wie viel Abstand zur tats\u00e4chlichen Grenze w\u00e4hrend \u00fcberlappender Ereignisse bleibt, nicht nur im Leerlauf danach.","ref":""},{"kind":"citation","text":"","ref":"S3"},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Mit dem lesenden Befehl ","ref":""},{"kind":"code","text":"INFO stats","ref":""},{"kind":"text","text":" erfasst du unter anderem Eviction-Z\u00e4hler. Werte deren \u00c4nderung pro Zeitintervall aus: Ein hoher historischer Stand allein sagt nicht, ob gerade Schl\u00fcssel verdr\u00e4ngt werden. Setze steigende Evictions in Beziehung zu Cache-Treffern und Backend-Last, sofern deine Anwendung diese Gr\u00f6\u00dfen bereitstellt.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Erfasse au\u00dferdem Redis-OOM-Antworten in der Anwendung und speicherbedingte Container-Ereignisse auf der Plattform. Beide Fehler k\u00f6nnen bei \u00e4hnlicher Last auftreten, betreffen aber unterschiedliche Grenzen. Eine Alarmierung sollte deshalb sowohl die verf\u00fcgbare Reserve als auch die beobachteten Fehler und deren zeitlichen Verlauf ber\u00fccksichtigen.","ref":""},{"kind":"citation","text":"","ref":"S6"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Wiederhole die Bewertung nach \u00c4nderungen am Datensatz, an der Schreiblast oder an Persistenz und Replikation. Auch eine Promotion ver\u00e4ndert die Rolle eines Replica und damit das zu pr\u00fcfende Lastprofil. Die Ergebnisse aus der isolierten Umgebung ersetzen nicht die fortlaufende Beobachtung der produktiven Instanzen.","ref":""},{"kind":"citation","text":"","ref":"S5"}]}]},{"id":"fehler-diagnose","heading":"Speicherprobleme gezielt eingrenzen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Steigt der Prozess-RSS, w\u00e4hrend ","ref":""},{"kind":"code","text":"used_memory","ref":""},{"kind":"text","text":" f\u00e4llt, betrachte zuerst den Verlauf und die vorherige Last. Freigegebener Speicher muss nicht sofort an das Betriebssystem zur\u00fcckgehen. Die ","ref":""},{"kind":"strong","text":"Allocator-Metriken","ref":""},{"kind":"text","text":" aus ","ref":""},{"kind":"code","text":"INFO memory","ref":""},{"kind":"text","text":" helfen bei der Einordnung; das Fragmentierungsverh\u00e4ltnis allein beweist weder ein Speicherleck noch dessen Ursache.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Pr\u00fcfe anschlie\u00dfend, ob der Anstieg zeitlich mit einem Persistenzlauf oder einer Synchronisierung zusammenf\u00e4llt. Dazu dienen ","ref":""},{"kind":"code","text":"INFO persistence","ref":""},{"kind":"text","text":" und ","ref":""},{"kind":"code","text":"INFO replication","ref":""},{"kind":"text","text":". Ein einzelner Wert f\u00fcr nicht zur Eviction gez\u00e4hlte Buffer beschreibt nur den aktuellen Zustand. F\u00fcr eine Reserve brauchst du Beobachtungen \u00fcber relevante Last- und St\u00f6rungsphasen hinweg.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einer ","ref":""},{"kind":"strong","text":"Redis-OOM-Antwort","ref":""},{"kind":"text","text":" pr\u00fcfe die konfigurierte Policy und ob geeignete Schl\u00fcssel f\u00fcr eine Eviction vorhanden sind. Insbesondere kann ein Schreibbefehl scheitern, wenn Redis unter der geltenden Policy keinen ausreichenden Platz freimachen kann. Die Anwendung muss diesen Fehler behandeln, statt einen erfolgreichen Schreibvorgang vorauszusetzen.","ref":""},{"kind":"citation","text":"","ref":"S6"},{"kind":"citation","text":"","ref":"S2"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Bei einem speicherbedingten Container-Abbruch untersuche dagegen die Plattformereignisse und den Verbrauch gegen\u00fcber dem Containerlimit. Beziehe Persistenzspitzen und andere im Container erfasste Verbraucher ein. Ein Redis-OOM und ein Container-OOM sind nicht gleichzusetzen: Auch ohne eine vorherige Redis-OOM-Antwort kann die \u00e4u\u00dfere Speichergrenze erreicht werden.","ref":""},{"kind":"citation","text":"","ref":"S3"}]},{"type":"paragraph","runs":[{"kind":"code","text":"maxmemory-clients","ref":""},{"kind":"text","text":" kann zus\u00e4tzlich den von Clients belegten Speicher begrenzen. \u00dcberschreitet der relevante Client-Speicher die konfigurierte Schwelle, kann Redis Clients mit hohem Verbrauch trennen; Anwendungen m\u00fcssen mit Verbindungsabbr\u00fcchen umgehen. Die Einstellung begrenzt nicht s\u00e4mtliche Replikationsverbindungen und ersetzt weder das Gesamtbudget noch die Beobachtung von Pufferspitzen.","ref":""},{"kind":"citation","text":"","ref":"S7"}]}]},{"id":"hosting-entscheidung","heading":"Redis Hosting und Architektur abw\u00e4gen","blocks":[{"type":"paragraph","runs":[{"kind":"text","text":"Reicht die beobachtete Reserve bei repr\u00e4sentativer Last nicht aus, kann mehr RAM sinnvoll sein, wenn Datensatz und Last grunds\u00e4tzlich auf einer Instanz bleiben sollen. Die zus\u00e4tzliche Kapazit\u00e4t muss jedoch zur tats\u00e4chlich wirksamen Host- oder Containergrenze geh\u00f6ren. Ein gr\u00f6\u00dferes Redis-Limit allein schafft keinen zus\u00e4tzlichen physischen Speicher.","ref":""},{"kind":"citation","text":"","ref":"S4"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Alternativ kann eine ","ref":""},{"kind":"strong","text":"Lastverteilung","ref":""},{"kind":"text","text":" den Speicherbedarf und die Schreibarbeit auf mehrere Instanzen verteilen. Das erfordert eine passende Aufteilung der Daten und eine eigene Budgetierung f\u00fcr jede beteiligte Instanz. Replikate sind dabei nicht mit einer Aufteilung des Datenbestands gleichzusetzen: Sie halten grunds\u00e4tzlich eine Kopie und ben\u00f6tigen daf\u00fcr eigenes RAM.","ref":""},{"kind":"citation","text":"","ref":"S5"}]},{"type":"paragraph","runs":[{"kind":"text","text":"Auch eine Architektur\u00e4nderung kann helfen, etwa die Trennung eines verlusttoleranten Caches von Daten mit strengeren Anforderungen. Dadurch lassen sich Policies und Kapazit\u00e4ten unabh\u00e4ngig w\u00e4hlen. Weder diese Trennung noch mehr RAM oder Lastverteilung garantiert allerdings, dass Persistenz-, Replikations- und Schreibspitzen k\u00fcnftig ausbleiben.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Beim Vergleich von ","ref":""},{"kind":"strong","text":"Anbietergrenzen","ref":""},{"kind":"text","text":" kl\u00e4re, ob der ausgewiesene Wert ein Containerlimit, ein Instanzlimit oder ein anders definiertes Datenbanklimit bezeichnet. Frage au\u00dferdem, welche Metriken und Diagnosebefehle zug\u00e4nglich sind, ob Replikate im gebuchten Speicher enthalten sind und wie sich eine Promotion auf die verf\u00fcgbaren Ressourcen auswirkt.","ref":""}]},{"type":"paragraph","runs":[{"kind":"text","text":"Redis Open Source, Redis Software und Redis Cloud sind getrennt zu betrachten. Bei Redis Software gilt das dokumentierte Datenbanklimit \u00fcber Primary- und Replica-Shards hinweg; daraus folgt keine entsprechende Regel f\u00fcr eine einzelne Redis-OSS-Instanz. F\u00fcr Redis Cloud und andere Hosting-Angebote pr\u00fcfst du die jeweils konkreten Produktbedingungen, statt diese Definition ungepr\u00fcft zu \u00fcbertragen.","ref":""},{"kind":"citation","text":"","ref":"S1"}]}]}]},"_wh_make_word_report":{"words":2162,"min":2000,"max":3000,"target":2500,"ok":true,"missing":0,"excess":0,"lead_words":62,"section_words":{"maxmemory-grundlagen":222,"rss-und-persistenz":226,"replikation-speicher":214,"metriken-erfassen":250,"budget-rechnen":225,"eviction-vergleichen":292,"betrieb-ueberwachen":217,"fehler-diagnose":220,"hosting-entscheidung":234}},"_wh_make_review":{"verdict":"pass","issues":[],"checked_source_ids":["S1","S2","S3","S4","S5","S6","S7"],"summary":"Fachlich freigabef\u00e4hig. Die gepr\u00fcften Originalquellen st\u00fctzen die Abgrenzung von maxmemory, ausgeschlossenen Puffern, Prozessspeicher und Eviction-Verhalten. RSS-Effekte, Copy-on-Write, Replica-Verhalten und die Besonderheit der Replikationsbuffer seit Redis 7.0 sind korrekt eingeordnet. Die Produktgrenzen von Redis Software werden nicht auf Redis Open Source \u00fcbertragen. Das illustrative Budgetbeispiel ergibt korrekt 5 GiB und benennt seine Voraussetzungen sowie Doppelz\u00e4hlungsrisiken. Diagnosebefehle, Tabellen, Versionshinweise und Bildkonzepte enthalten keine festgestellten fachlichen Fehler; das fotografische Motiv ist ausdr\u00fccklich als KI-generiertes Symbolbild gekennzeichnet. Ein Chart und behauptete eigene Messungen liegen nicht vor."},"_wh_make_review_doc_hash":"656b7c8d51118ed0fa3cfb0264c799884ab362d2160c431915834a20b6c4ea7e","_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"inline_featured_image":null,"_yoast_wpseo_linkdex":null,"_eael_widget_elements":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_trp_translated_slug_en_us":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_wh_make_writer_raw":null,"_wh_make_design_backup_204":null,"_wp_desired_post_slug":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"81","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"redis maxmemory","rank_math_og_content_image":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"22166","_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":"Redis maxmemory mit Reserve planen: Speicherwerte verstehen, Replikate ber\u00fccksichtigen und Persistenzspitzen unter Last pr\u00fcfen.","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/22164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=22164"}],"version-history":[{"count":2,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/22164\/revisions"}],"predecessor-version":[{"id":22169,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/22164\/revisions\/22169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/22166"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=22164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=22164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=22164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}