{"id":683,"date":"2026-04-15T00:21:03","date_gmt":"2026-04-15T00:21:03","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-memorystore-for-redis-cluster-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-databases\/"},"modified":"2026-04-15T00:21:03","modified_gmt":"2026-04-15T00:21:03","slug":"google-cloud-memorystore-for-redis-cluster-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-databases","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-memorystore-for-redis-cluster-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-databases\/","title":{"rendered":"Google Cloud Memorystore for Redis Cluster Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Databases"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Databases<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Memorystore for Redis Cluster is a managed, in-memory data store on <strong>Google Cloud<\/strong> that runs <strong>Redis in cluster mode<\/strong> (Redis OSS \/ Redis Cluster). It\u2019s designed for low-latency access patterns\u2014caching, session storage, real-time counters, rate limiting, pub\/sub style messaging patterns (where supported), and other workloads that benefit from microsecond-to-millisecond reads\/writes.<\/p>\n\n\n\n<p>In simple terms: you get a Google-managed Redis Cluster that scales beyond a single primary node by <strong>sharding data across multiple nodes<\/strong>. Your applications connect over a private network and use it like Redis\u2014without operating VMs, patching Redis, or building your own failover and scaling automation.<\/p>\n\n\n\n<p>Technically, Redis Cluster partitions the keyspace into hash slots distributed across shards (primary nodes), and uses replicas for availability (depending on your configuration). Memorystore for Redis Cluster provides the managed control plane (provisioning, health management, upgrades per service behavior, integration with Google Cloud networking and observability) while you focus on application logic and data access patterns.<\/p>\n\n\n\n<p>It solves the problem of needing <strong>fast, scalable, shared state<\/strong> (a common requirement across modern cloud architectures) without turning Redis operations into a full-time job\u2014especially when a single-node Redis deployment becomes a bottleneck due to memory size, throughput, or connection concurrency.<\/p>\n\n\n\n<blockquote>\n<p>Naming note (important): Google Cloud has multiple Redis offerings under Memorystore (for example, Memorystore for Redis, Memorystore for Redis Cluster, and Memorystore for Redis Enterprise). This tutorial is <strong>only<\/strong> about <strong>Memorystore for Redis Cluster<\/strong>. Always verify the exact product name and capabilities in the official docs because Google Cloud product packaging evolves over time. Start here: https:\/\/cloud.google.com\/memorystore\/docs\/redis\/redis-cluster<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Memorystore for Redis Cluster?<\/h2>\n\n\n\n<p><strong>Official purpose (what it is):<\/strong><br\/>\nMemorystore for Redis Cluster is Google Cloud\u2019s managed Redis service that supports <strong>Redis Cluster<\/strong> (sharded Redis). It\u2019s part of Google Cloud\u2019s <strong>Databases<\/strong> portfolio and is intended for high-performance in-memory workloads requiring horizontal scaling.<\/p>\n\n\n\n<p><strong>Core capabilities (what it does):<\/strong>\n&#8211; Runs Redis in cluster mode so your data can be <strong>distributed across multiple shards<\/strong>.\n&#8211; Provides a managed lifecycle (provisioning, health monitoring, repair actions per service design, and integration with Google Cloud operations tooling).\n&#8211; Integrates with Google Cloud networking so clients connect privately from workloads running in your VPC (for example, Compute Engine, GKE, Cloud Run with VPC access, or other services that can reach your VPC).<\/p>\n\n\n\n<p><strong>Major components (conceptually):<\/strong>\n&#8211; <strong>Cluster<\/strong>: the top-level managed resource.\n&#8211; <strong>Shards (primaries)<\/strong>: hold partitions of the dataset (hash slot ranges).\n&#8211; <strong>Replicas<\/strong> (optional\/depending on configuration): improve availability and read scaling patterns (exact behavior depends on Redis Cluster usage and service specifics\u2014verify in official docs).\n&#8211; <strong>Endpoints<\/strong>: connection endpoints for clients (often a discovery endpoint for Redis Cluster client behavior; verify exact endpoint model in current docs).<\/p>\n\n\n\n<p><strong>Service type:<\/strong>\n&#8211; Fully managed Redis Cluster (PaaS-style managed database\/cache service).\n&#8211; Redis OSS semantics in cluster mode (client libraries typically must support cluster behavior).<\/p>\n\n\n\n<p><strong>Scope and placement:<\/strong>\n&#8211; Typically <strong>regional<\/strong> in the sense that you select a region, and the service deploys resources within that region (often across multiple zones for resilience depending on configuration).<br\/>\n  Exact zonal\/regional placement and HA semantics vary by configuration\u2014<strong>verify in official docs<\/strong> for current behavior and requirements.<\/p>\n\n\n\n<p><strong>How it fits into the Google Cloud ecosystem:<\/strong>\n&#8211; <strong>Compute<\/strong>: commonly used by GKE, Compute Engine, Cloud Run (via VPC access), and App Engine (where networking allows).\n&#8211; <strong>Networking<\/strong>: deployed into\/accessible from your VPC; may require Private Service Access or other Google-managed private connectivity mechanisms depending on current architecture\u2014<strong>verify in official docs<\/strong> and in the Console creation wizard.\n&#8211; <strong>Operations<\/strong>: uses Cloud Monitoring and Cloud Logging integration patterns supported by Google-managed services.\n&#8211; <strong>Security<\/strong>: leverages IAM for management-plane access; data-plane access is typically controlled by private networking and Redis auth\/encryption features where supported.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Memorystore for Redis Cluster?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time to market<\/strong>: avoid building and operating a sharded Redis Cluster yourself.<\/li>\n<li><strong>Predictable operational posture<\/strong>: managed patching\/maintenance patterns and integrated observability reduce on-call burden (within the bounds of the service SLA and shared responsibility model).<\/li>\n<li><strong>Scales with demand<\/strong>: suitable for applications that outgrow a single Redis node due to throughput or memory constraints.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Horizontal scaling<\/strong>: Redis Cluster enables sharding the dataset across multiple primaries.<\/li>\n<li><strong>Low latency<\/strong>: in-memory access with high throughput for hot-path workloads.<\/li>\n<li><strong>Compatibility with Redis OSS<\/strong>: many Redis commands and data types behave similarly, but cluster mode has important constraints (multi-key operations and transactions across slots, client redirections, etc.).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed provisioning and health management<\/strong>: create clusters quickly, monitor with Google Cloud tools.<\/li>\n<li><strong>Fewer moving parts than self-managed<\/strong>: no VM OS patching, no manual failover scripts, less bespoke automation.<\/li>\n<li><strong>Standardized deployment<\/strong>: repeatable cluster creation through Console, gcloud, and Infrastructure-as-Code (Terraform support may exist\u2014verify current provider resources).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Private connectivity<\/strong>: typically no public IP; access is from your VPC.<\/li>\n<li><strong>IAM-controlled administration<\/strong>: restrict who can create\/modify\/delete clusters via Google Cloud IAM.<\/li>\n<li><strong>Auditability<\/strong>: administrative actions can be captured in Cloud Audit Logs (for management-plane operations).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Higher memory ceilings<\/strong> than a single instance (because shards add capacity).<\/li>\n<li><strong>Parallelism<\/strong> across shards for better throughput.<\/li>\n<li><strong>More predictable performance<\/strong> than running Redis on noisy shared infrastructure (depending on node sizing and service behavior).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose Memorystore for Redis Cluster when:\n&#8211; You need Redis semantics but <strong>must scale beyond a single node<\/strong>.\n&#8211; You have a <strong>high QPS cache<\/strong>, real-time counters, distributed rate-limiting, or session store with growth needs.\n&#8211; You\u2019re running microservices on Google Cloud and need a shared low-latency state store.\n&#8211; You want managed operations and a Google Cloud-native deployment model.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When they should not choose it<\/h3>\n\n\n\n<p>Avoid (or reconsider) Memorystore for Redis Cluster when:\n&#8211; You require <strong>durable storage<\/strong> as the primary database (Redis is in-memory; persistence\/backups may be limited or not the same as a durable database\u2014verify in official docs).\n&#8211; You rely heavily on <strong>multi-key operations across arbitrary keys<\/strong>, multi-key transactions, or patterns that are difficult in cluster mode (because keys may land on different hash slots).\n&#8211; You need <strong>global, multi-region active-active<\/strong> caching with strong cross-region replication semantics (consider specialized designs; Google Cloud offerings differ\u2014verify).\n&#8211; You need full control over Redis modules or custom builds (managed services typically restrict extensions\/modules).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Memorystore for Redis Cluster used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>E-commerce (carts, inventory counters, personalization caches)<\/li>\n<li>Media\/streaming (real-time metrics, session tokens)<\/li>\n<li>FinTech (rate limiting, fraud scoring caches\u2014ensure appropriate compliance design)<\/li>\n<li>Gaming (leaderboards, matchmaking state)<\/li>\n<li>SaaS platforms (tenant-level caching, API throttling)<\/li>\n<li>AdTech (real-time bidding caches, counters)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Platform engineering teams building shared caching layers<\/li>\n<li>SRE\/DevOps teams standardizing managed data services<\/li>\n<li>Backend developers implementing performance optimizations<\/li>\n<li>Security engineers enforcing private access and IAM governance<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>High-throughput API backends needing caching<\/li>\n<li>Real-time analytics pipelines needing transient state<\/li>\n<li>Event-driven systems tracking deduplication keys, locks, and counters<\/li>\n<li>Multi-tenant SaaS requiring isolation patterns (logical prefixes, per-tenant keys, possibly multiple clusters)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Microservices on GKE with Redis Cluster as a shared cache<\/li>\n<li>Cloud Run services connecting via Serverless VPC Access<\/li>\n<li>Compute Engine-based apps needing sub-millisecond reads<\/li>\n<li>Hybrid connectivity patterns (on-prem to VPC) where latency and network design allow (be careful with latency)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Production<\/strong>: multi-shard clusters sized for steady-state memory + headroom; replicas and multi-zone design where supported.<\/li>\n<li><strong>Dev\/Test<\/strong>: smallest allowed clusters for integration testing; ephemeral clusters for CI; strict cleanup practices to control cost.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Memorystore for Redis Cluster is commonly used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) High-QPS API response caching<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Database reads are expensive; API latency increases under load.<\/li>\n<li><strong>Why it fits:<\/strong> Redis Cluster scales reads\/writes horizontally with sharding.<\/li>\n<li><strong>Scenario:<\/strong> Product catalog service caches rendered product JSON by product ID with a 5-minute TTL.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Session store for stateless services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Stateless compute needs shared session state (web sessions, refresh tokens).<\/li>\n<li><strong>Why it fits:<\/strong> Low-latency key\/value access; TTLs map well to session expiration.<\/li>\n<li><strong>Scenario:<\/strong> An auth gateway stores user session tokens keyed by session ID and expires them after 30 minutes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Distributed rate limiting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Prevent abuse across many app instances without a central bottleneck.<\/li>\n<li><strong>Why it fits:<\/strong> Atomic increments and TTL-based windows are a common Redis pattern; cluster mode scales throughput.<\/li>\n<li><strong>Scenario:<\/strong> API gateway increments counters per API key per minute; blocks when threshold is exceeded.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Real-time leaderboards (gaming or engagement)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Need fast ranking updates and queries.<\/li>\n<li><strong>Why it fits:<\/strong> Redis sorted sets are fast; cluster provides more capacity and throughput.<\/li>\n<li><strong>Scenario:<\/strong> Mobile game updates player scores; reads top 100 players every few seconds.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Job deduplication in event processing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Event streams can deliver duplicates; you need idempotency.<\/li>\n<li><strong>Why it fits:<\/strong> Set \u201cseen IDs\u201d with TTL to avoid reprocessing.<\/li>\n<li><strong>Scenario:<\/strong> Pub\/Sub consumer stores event IDs for 24 hours; duplicates are dropped.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Feature flag and configuration caching<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Central config store calls add latency and cost.<\/li>\n<li><strong>Why it fits:<\/strong> Redis is ideal for caching small objects; cluster helps as usage grows.<\/li>\n<li><strong>Scenario:<\/strong> Each microservice reads feature flags from Redis at startup and refreshes periodically.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Shopping cart state and ephemeral checkout flows<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Checkout state changes quickly and needs low latency.<\/li>\n<li><strong>Why it fits:<\/strong> In-memory state and TTLs are a natural match; cluster handles peak traffic.<\/li>\n<li><strong>Scenario:<\/strong> Cart service stores cart by user ID with a 2-hour TTL and updates frequently.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Edge-style caching inside a region<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You want regional acceleration for dynamic content.<\/li>\n<li><strong>Why it fits:<\/strong> Redis Cluster can serve as a regional cache layer behind a load balancer.<\/li>\n<li><strong>Scenario:<\/strong> A regional \u201ccontent API\u201d caches computed recommendations for 60 seconds to smooth spikes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Real-time counters and telemetry aggregation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Need fast counters for dashboards without hammering the OLTP database.<\/li>\n<li><strong>Why it fits:<\/strong> Atomic INCR operations scale well; periodic flush to durable store.<\/li>\n<li><strong>Scenario:<\/strong> Increment per-page-view counters; every minute a batch job reads and writes to BigQuery.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Shared application state for websockets \/ realtime collaboration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Many concurrent users need shared state updates quickly.<\/li>\n<li><strong>Why it fits:<\/strong> Redis can store presence and transient state; cluster provides scale.<\/li>\n<li><strong>Scenario:<\/strong> Collaboration app stores \u201cuser online\u201d keys and room membership sets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Token bucket \/ leaky bucket throttling (per-user and per-IP)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Throttling logic must be correct under concurrency.<\/li>\n<li><strong>Why it fits:<\/strong> Lua scripts and atomic primitives can implement rate limiting (note cluster scripting constraints\u2014verify).<\/li>\n<li><strong>Scenario:<\/strong> Protect login endpoint by limiting per-IP and per-account attempts.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Caching results from expensive ML inference<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> ML inference is costly; repeated requests for the same input occur.<\/li>\n<li><strong>Why it fits:<\/strong> Cache inference results with TTL; cluster handles large key cardinality.<\/li>\n<li><strong>Scenario:<\/strong> Cache embeddings or classification results keyed by normalized request hash for 10 minutes.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>Feature availability and exact behavior can vary by region, Redis version, and current product release. Always verify in official documentation for Memorystore for Redis Cluster: https:\/\/cloud.google.com\/memorystore\/docs\/redis\/redis-cluster<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Managed Redis Cluster (sharding)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Distributes keys across shards using Redis Cluster hash slots.<\/li>\n<li><strong>Why it matters:<\/strong> Breaks through single-node memory and throughput limits.<\/li>\n<li><strong>Practical benefit:<\/strong> Scale out by increasing shard capacity rather than vertical-only scaling.<\/li>\n<li><strong>Caveats:<\/strong> Cluster-aware clients are required; multi-key operations across different hash slots can fail.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">High availability options (replication\/failover semantics)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses replicas to improve availability and resilience (exact HA model depends on the service configuration).<\/li>\n<li><strong>Why it matters:<\/strong> Reduces impact of node\/zone failures.<\/li>\n<li><strong>Practical benefit:<\/strong> Better uptime characteristics for production workloads.<\/li>\n<li><strong>Caveats:<\/strong> Failover behavior, RPO\/RTO characteristics, and replica read behavior should be validated against current docs and tests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Private networking integration (VPC access)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Provides private IP connectivity from workloads in your VPC.<\/li>\n<li><strong>Why it matters:<\/strong> Keeps data-plane traffic off the public internet.<\/li>\n<li><strong>Practical benefit:<\/strong> Lower exposure and often lower latency.<\/li>\n<li><strong>Caveats:<\/strong> Connectivity model can require specific VPC setup (for example, Private Service Access or other mechanisms). Verify requirements during cluster creation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM-controlled management plane<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses Google Cloud IAM to control who can create\/modify\/delete clusters.<\/li>\n<li><strong>Why it matters:<\/strong> Prevents unauthorized infrastructure changes.<\/li>\n<li><strong>Practical benefit:<\/strong> Apply least privilege via predefined roles; integrate with org policies.<\/li>\n<li><strong>Caveats:<\/strong> IAM does not automatically secure data-plane access; you still need network controls and Redis authentication\/encryption where supported.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Observability (Monitoring\/Logging integration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Exposes metrics and operational signals to Cloud Monitoring; administrative actions to Cloud Audit Logs.<\/li>\n<li><strong>Why it matters:<\/strong> Enables SRE workflows: alerting, SLOs, dashboards, incident response.<\/li>\n<li><strong>Practical benefit:<\/strong> Track memory usage, connections, CPU, ops\/sec, evictions, and latency patterns (exact metric set varies\u2014verify).<\/li>\n<li><strong>Caveats:<\/strong> Not all Redis internal metrics may be exposed; some debugging may require application-level telemetry.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Redis version selection (where supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you choose among supported Redis OSS versions for the service.<\/li>\n<li><strong>Why it matters:<\/strong> Client compatibility and feature availability depend on Redis version.<\/li>\n<li><strong>Practical benefit:<\/strong> Align with your application\u2019s tested Redis version.<\/li>\n<li><strong>Caveats:<\/strong> Supported versions change over time; upgrades may have maintenance windows and behavioral changes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Maintenance and upgrades (service-managed)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Google manages underlying infrastructure and applies updates per service policy.<\/li>\n<li><strong>Why it matters:<\/strong> Reduces patching burden and risk of unpatched CVEs.<\/li>\n<li><strong>Practical benefit:<\/strong> Better operational hygiene.<\/li>\n<li><strong>Caveats:<\/strong> You must plan for maintenance events; test client reconnect logic and cluster-aware behavior.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scaling model (cluster sizing)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you scale capacity by adjusting shard count and\/or shard size (exact knobs depend on the service).<\/li>\n<li><strong>Why it matters:<\/strong> Scale to meet growth in data and throughput.<\/li>\n<li><strong>Practical benefit:<\/strong> Performance tuning and growth planning.<\/li>\n<li><strong>Caveats:<\/strong> Resharding and scaling operations can affect performance; plan maintenance windows and load tests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility with Redis clients (cluster-aware)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Supports Redis protocol in cluster mode.<\/li>\n<li><strong>Why it matters:<\/strong> Most applications need a cluster-capable client to handle MOVED\/ASK redirects.<\/li>\n<li><strong>Practical benefit:<\/strong> Use standard Redis ecosystem tools.<\/li>\n<li><strong>Caveats:<\/strong> Some clients require explicit \u201ccluster mode\u201d configuration; some commands behave differently in cluster mode.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>At a high level, Memorystore for Redis Cluster consists of:\n&#8211; A <strong>managed control plane<\/strong> (Google Cloud APIs, Console, IAM, Audit Logs) used to create and manage the cluster.\n&#8211; A <strong>data plane<\/strong> (Redis nodes\/shards\/replicas, endpoints, private connectivity) where your application reads\/writes data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (conceptual)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>An operator (or CI\/CD pipeline) calls Google Cloud APIs (Console\/gcloud\/Terraform) to create a cluster.<\/li>\n<li>Google Cloud provisions the Redis Cluster components in the target region and configures private connectivity to your VPC.<\/li>\n<li>Your application connects to the cluster endpoint using a <strong>cluster-aware Redis client<\/strong>.<\/li>\n<li>The client sends commands; Redis Cluster routes keys to the right shard based on hash slots, returning MOVED\/ASK redirections if needed.<\/li>\n<li>Metrics flow to Cloud Monitoring; admin events to Cloud Audit Logs.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services<\/h3>\n\n\n\n<p>Common integration points on Google Cloud:\n&#8211; <strong>GKE<\/strong>: deploy microservices that use Redis Cluster for caching and shared state.\n&#8211; <strong>Compute Engine<\/strong>: VM-based applications connect over VPC.\n&#8211; <strong>Cloud Run<\/strong>: connect through Serverless VPC Access (ensure network routing and egress are configured correctly).\n&#8211; <strong>VPC<\/strong>: private IP routing; firewall rules for egress\/ingress within your network.\n&#8211; <strong>Cloud Monitoring<\/strong>: dashboards and alerting.\n&#8211; <strong>Cloud Logging \/ Audit Logs<\/strong>: tracking admin actions and troubleshooting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>The precise dependencies can evolve, but commonly include:\n&#8211; Memorystore APIs\n&#8211; Google Cloud networking services used for private connectivity\n&#8211; Cloud Monitoring\/Logging for observability<\/p>\n\n\n\n<p>Always verify required APIs in docs and the Console wizard.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Management plane:<\/strong> IAM (roles\/permissions) controls cluster operations.<\/li>\n<li><strong>Data plane:<\/strong> typically controlled by:<\/li>\n<li>Private networking (who can route to the endpoint)<\/li>\n<li>Redis auth \/ TLS options if supported by the specific offering and configuration (<strong>verify in official docs<\/strong>)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Most deployments use <strong>private IP connectivity<\/strong> in a VPC.<\/li>\n<li>Your clients must be in a network that can reach the cluster endpoint (same VPC, peered VPC, or other supported connectivity).<\/li>\n<li>Cross-region access is technically possible with VPC routing, but latency can harm performance; prefer same-region clients.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use Cloud Monitoring metrics to track:<\/li>\n<li>Memory utilization and eviction rate<\/li>\n<li>Connections<\/li>\n<li>Command throughput<\/li>\n<li>CPU utilization (if exposed)<\/li>\n<li>Replication\/availability signals (if exposed)<\/li>\n<li>Use Cloud Audit Logs for:<\/li>\n<li>Cluster creation\/deletion<\/li>\n<li>Configuration changes<\/li>\n<li>IAM policy changes<\/li>\n<li>Governance:<\/li>\n<li>Resource labels for ownership, environment, cost center<\/li>\n<li>Organization policies to restrict where clusters can be created (regions, networks)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  A[App on GKE\/Compute Engine\/Cloud Run] --&gt;|Redis protocol (cluster-aware client)| B[Memorystore for Redis Cluster Endpoint]\n  B --&gt; C[Shard 1 (Primary)]\n  B --&gt; D[Shard 2 (Primary)]\n  B --&gt; E[Shard 3 (Primary)]\n  C --- C2[Replica (optional)]\n  D --- D2[Replica (optional)]\n  E --- E2[Replica (optional)]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Project[\"Google Cloud Project\"]\n    subgraph VPC[\"VPC Network (private)\"]\n      subgraph GKE[\"GKE Cluster\"]\n        S1[Service A Pods]\n        S2[Service B Pods]\n      end\n\n      subgraph CE[\"Compute Engine (ops\/batch)\"]\n        VM[Admin\/Batch VM]\n      end\n\n      subgraph MS[\"Memorystore for Redis Cluster (region)\"]\n        EP[Cluster Endpoint \/ Discovery Endpoint]\n        subgraph Shards[\"Shards\"]\n          P1[Primary Shard 1]\n          P2[Primary Shard 2]\n          P3[Primary Shard 3]\n        end\n        R1[Replicas (optional)]\n      end\n    end\n\n    MON[Cloud Monitoring]\n    LOG[Cloud Logging &amp; Audit Logs]\n  end\n\n  S1 --&gt;|private IP| EP\n  S2 --&gt;|private IP| EP\n  VM --&gt;|private IP| EP\n\n  MS --&gt; MON\n  MS --&gt; LOG\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Before starting, ensure the following are in place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Cloud account\/project requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A Google Cloud account with an active <strong>billing account<\/strong> attached to your project.<\/li>\n<li>A project where you have permission to enable APIs and create networking and Memorystore resources.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>You\u2019ll need permissions for:\n&#8211; Creating and managing Memorystore clusters\n&#8211; Creating Compute Engine VMs (for connectivity testing)\n&#8211; Managing VPC networking as required by the service (subnets, firewall rules, and any private connectivity setup)<\/p>\n\n\n\n<p>Common roles that may be used (choose least privilege in real environments):\n&#8211; Memorystore Admin role (for Redis cluster management)\n&#8211; Compute Admin (for VM creation)\n&#8211; Network Admin (if you must modify VPC connectivity)<\/p>\n\n\n\n<p>Exact IAM roles for Memorystore for Redis Cluster can change; <strong>verify in official IAM documentation<\/strong> for Memorystore.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Billing must be enabled. Memorystore resources incur charges while running.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CLI \/ tools<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Cloud CLI (<code>gcloud<\/code>)<\/strong>: https:\/\/cloud.google.com\/sdk\/docs\/install<\/li>\n<li>A Redis client for testing:<\/li>\n<li><code>redis-cli<\/code> (from Redis tools) on a VM<\/li>\n<li>or application SDK clients that support Redis Cluster<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Memorystore for Redis Cluster is not available in every region. Check current regions in official docs and Console during resource creation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas \/ limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Memorystore quotas (clusters, shards, memory) and networking quotas vary. Check:<\/li>\n<li>Quotas page in Google Cloud Console<\/li>\n<li>Memorystore documentation for limits<\/li>\n<li>Plan capacity for shards, replicas, and connections.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services\/APIs<\/h3>\n\n\n\n<p>Enable APIs in your project (exact list may vary; verify in the docs\/Console):\n&#8211; Memorystore API (Redis)\n&#8211; Service Networking API (often required for private service connectivity patterns)\n&#8211; Compute Engine API (for creating a test VM)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<p>Always validate pricing with official sources because SKUs and regional rates change.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing sources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Memorystore pricing page: https:\/\/cloud.google.com\/memorystore\/pricing<\/li>\n<li>Google Cloud Pricing Calculator: https:\/\/cloud.google.com\/products\/calculator<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (typical model)<\/h3>\n\n\n\n<p>Memorystore for Redis Cluster costs are usually driven by:\n&#8211; <strong>Provisioned capacity<\/strong> (memory per shard\/node and number of shards)\n&#8211; <strong>Replication\/availability configuration<\/strong> (replicas add cost)\n&#8211; <strong>Runtime hours<\/strong> (clusters accrue charges while running)\n&#8211; <strong>Network egress<\/strong> (especially cross-zone or cross-region traffic, and traffic leaving Google Cloud)\n&#8211; <strong>Operations overhead<\/strong> (monitoring\/logging ingestion can have costs at scale)<\/p>\n\n\n\n<blockquote>\n<p>Do not assume \u201crequest-based\u201d pricing; Redis managed services are typically <strong>capacity-based<\/strong>. Verify exact SKUs for Memorystore for Redis Cluster on the pricing page.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Memorystore typically does <strong>not<\/strong> offer a broad always-free tier for production-grade clusters. If any free credits or trial promotions apply, they are account-specific. Verify current promotions in Google Cloud Billing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (what makes the bill go up)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>More shards (horizontal scale)<\/li>\n<li>Larger shard\/node size (more memory)<\/li>\n<li>Adding replicas for high availability<\/li>\n<li>Running 24\/7 (clusters are billed while allocated)<\/li>\n<li>Cross-zone\/cross-region client traffic<\/li>\n<li>High connection counts (may require larger sizing for CPU\/headroom)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden or indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Compute Engine VM for testing<\/strong> (small, but not free unless within free tier and region\/eligibility)<\/li>\n<li><strong>Logging\/Monitoring ingestion<\/strong> if you export large amounts of logs\/metrics<\/li>\n<li><strong>Data egress<\/strong> if consumers are outside region or outside Google Cloud<\/li>\n<li><strong>CI environments<\/strong> that leave clusters running accidentally<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer placing clients in the <strong>same region<\/strong> as the cluster.<\/li>\n<li>Avoid cross-region access for hot-path calls; latency and egress can become significant.<\/li>\n<li>For multi-zone architectures, understand whether data-plane traffic crosses zones and whether that affects cost (depends on service topology\u2014verify).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Right-size shards: don\u2019t overprovision memory \u201cjust in case.\u201d Use metrics to observe steady-state memory and set headroom.<\/li>\n<li>Use TTLs for cache entries to prevent unbounded growth.<\/li>\n<li>Separate dev\/test clusters and enforce automated cleanup.<\/li>\n<li>Minimize cross-region calls; use regional affinity.<\/li>\n<li>Consider whether a non-cluster Redis (single primary + replica) is sufficient for smaller workloads (Memorystore for Redis), to reduce complexity and possibly cost.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated prices)<\/h3>\n\n\n\n<p>A low-cost starter approach typically looks like:\n&#8211; Smallest allowed cluster configuration in a low-cost region\n&#8211; Minimal shards and replicas allowed by the service\n&#8211; Short runtime (create for a few hours, then delete)<\/p>\n\n\n\n<p>Because exact minimums and SKUs vary, the safe workflow is:\n1. Open the Pricing Calculator: https:\/\/cloud.google.com\/products\/calculator<br\/>\n2. Search for Memorystore and select Redis Cluster (if separately listed).\n3. Choose your region and smallest configuration.\n4. Estimate monthly cost and then convert to hourly for a lab.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>For production, plan for:\n&#8211; 24\/7 runtime\n&#8211; HA configuration (replicas and multi-zone placement if supported\/required)\n&#8211; Sufficient headroom for:\n  &#8211; peak QPS\n  &#8211; memory fragmentation overhead\n  &#8211; failover scenarios\n&#8211; Possibly separate clusters per environment (prod, staging)\n&#8211; Egress patterns (especially if services span regions)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab builds a small, practical setup:\n&#8211; Create a VPC (or use an existing one)\n&#8211; Create a Memorystore for Redis Cluster cluster\n&#8211; Create a Compute Engine VM in the same region and VPC\n&#8211; Connect using <code>redis-cli<\/code> in cluster mode\n&#8211; Run basic commands to validate sharding behavior\n&#8211; Clean up resources<\/p>\n\n\n\n<p>This lab is designed to be <strong>safe and low-cost<\/strong>, but Redis Cluster often has a non-trivial minimum footprint. Always check the estimated cost before you click <strong>Create<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Provision <strong>Memorystore for Redis Cluster<\/strong> and connect to it from a <strong>Compute Engine<\/strong> VM using a <strong>cluster-aware redis-cli<\/strong> session, then validate key distribution and basic read\/write operations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create\/select a Google Cloud project and enable required APIs.\n2. Configure networking prerequisites.\n3. Create a Memorystore for Redis Cluster cluster in a chosen region.\n4. Create a test VM in the same region and VPC.\n5. Install <code>redis-cli<\/code>, connect, and run validation commands.\n6. Troubleshoot common connectivity issues.\n7. Delete all resources to stop billing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Set up your project and enable APIs<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1.1 Select your project<\/h4>\n\n\n\n<p>In Cloud Shell (recommended), set your project:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud config set project PROJECT_ID\n<\/code><\/pre>\n\n\n\n<p>Verify:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud config get-value project\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> The active project is your intended <code>PROJECT_ID<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.2 Enable required APIs<\/h4>\n\n\n\n<p>Enable commonly required APIs:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services enable \\\n  redis.googleapis.com \\\n  compute.googleapis.com \\\n  servicenetworking.googleapis.com\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> APIs enable successfully (this can take a minute).<\/p>\n\n\n\n<blockquote>\n<p>If <code>redis.googleapis.com<\/code> is not correct for your environment, verify the required service name in official docs or by checking <strong>APIs &amp; Services<\/strong> in the Console. Google occasionally changes API surfaces; the Console will always show what\u2019s required.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Prepare networking (VPC and firewall)<\/h3>\n\n\n\n<p>Memorystore for Redis Cluster is typically accessed privately from within your VPC. For a simple lab, you can use the <code>default<\/code> VPC, but many organizations disable it. Below are two options.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Option A (simplest): Use the default VPC<\/h4>\n\n\n\n<p>Check if a <code>default<\/code> network exists:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud compute networks list\n<\/code><\/pre>\n\n\n\n<p>If you see <code>default<\/code>, you can use it.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Option B (recommended practice): Create a dedicated lab VPC<\/h4>\n\n\n\n<p>Create a VPC network and subnet (choose a region you plan to use for the cluster):<\/p>\n\n\n\n<pre><code class=\"language-bash\">export REGION=\"us-central1\"\nexport NETWORK=\"redis-lab-vpc\"\nexport SUBNET=\"redis-lab-subnet\"\n\ngcloud compute networks create \"$NETWORK\" --subnet-mode=custom\n\ngcloud compute networks subnets create \"$SUBNET\" \\\n  --network=\"$NETWORK\" \\\n  --region=\"$REGION\" \\\n  --range=\"10.10.0.0\/24\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A VPC and subnet exist in your selected region.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.1 Firewall rule to allow internal traffic (if needed)<\/h4>\n\n\n\n<p>Many VPCs already have internal allow rules. If yours does not, create a minimal internal rule so your VM can talk to private IPs:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud compute firewall-rules create allow-internal-lab \\\n  --network=\"$NETWORK\" \\\n  --allow=tcp,udp,icmp \\\n  --source-ranges=\"10.10.0.0\/24\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Instances in the subnet can communicate with each other using TCP\/UDP\/ICMP.<\/p>\n\n\n\n<blockquote>\n<p>Note: Memorystore endpoints may reside outside your subnet range while still being reachable via private connectivity. The exact firewall requirements depend on the connectivity model. If you hit connectivity issues later, see Troubleshooting.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create a Memorystore for Redis Cluster cluster<\/h3>\n\n\n\n<p>You can create the cluster via Console (most beginner-friendly) or <code>gcloud<\/code> (more repeatable). Use the Console path for the most reliable experience because it shows <strong>current required fields<\/strong>, minimum shard\/replica counts, and networking prerequisites.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.1 Create via Google Cloud Console (recommended)<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to Memorystore in the Console: https:\/\/console.cloud.google.com\/memorystore<\/li>\n<li>Select <strong>Redis Cluster<\/strong> (ensure it\u2019s \u201cMemorystore for Redis Cluster\u201d, not the non-cluster Redis service).<\/li>\n<li>Click <strong>Create<\/strong>.<\/li>\n<li>Choose:\n   &#8211; <strong>Region:<\/strong> <code>us-central1<\/code> (or your preferred region)\n   &#8211; <strong>Network:<\/strong> your lab VPC (or default)\n   &#8211; <strong>Shard count \/ Replica count:<\/strong> choose the smallest allowed for a lab (the Console enforces minimums)\n   &#8211; <strong>Shard\/node size:<\/strong> choose the smallest available for your region\n   &#8211; <strong>Redis version:<\/strong> choose a supported version that matches your client compatibility needs<\/li>\n<li>Click <strong>Create<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> Cluster status becomes <strong>Ready<\/strong> after provisioning completes.<\/p>\n\n\n\n<p>Record the connection details shown in the Console:\n&#8211; Cluster endpoint\/discovery endpoint hostname\/IP\n&#8211; Port (commonly 6379 unless configured otherwise)\n&#8211; Any authentication\/TLS settings (if enabled)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2 Create via gcloud (verify command availability)<\/h4>\n\n\n\n<p><code>gcloud<\/code> support for Redis Cluster can depend on your installed SDK version and release channel. First, update:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud components update\n<\/code><\/pre>\n\n\n\n<p>Check whether your CLI exposes Redis Cluster commands:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud redis --help\n<\/code><\/pre>\n\n\n\n<p>Look for a <code>clusters<\/code> command group. If present, inspect required flags:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud redis clusters create --help\n<\/code><\/pre>\n\n\n\n<p>If the command is only available under <code>beta<\/code>, check:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud beta redis clusters create --help\n<\/code><\/pre>\n\n\n\n<p>Follow the help output to create the cluster with the required parameters (region, network, shard count, replica count, size\/node type). Because flags and names can change, <strong>use the help output as the source of truth<\/strong>.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> A cluster is created and reaches Ready state.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a Compute Engine VM to test connectivity<\/h3>\n\n\n\n<p>Create a small VM in the same region and VPC\/subnet.<\/p>\n\n\n\n<pre><code class=\"language-bash\">export ZONE=\"${REGION}-a\"\nexport VM_NAME=\"redis-cluster-client-vm\"\n\ngcloud compute instances create \"$VM_NAME\" \\\n  --zone=\"$ZONE\" \\\n  --machine-type=\"e2-micro\" \\\n  --subnet=\"$SUBNET\" \\\n  --image-family=\"debian-12\" \\\n  --image-project=\"debian-cloud\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> VM is created and running.<\/p>\n\n\n\n<blockquote>\n<p>If you used the <code>default<\/code> VPC, replace <code>--subnet=\"$SUBNET\"<\/code> with <code>--network=default<\/code> (or the appropriate subnet in that network).<\/p>\n<\/blockquote>\n\n\n\n<p>SSH into the VM:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud compute ssh \"$VM_NAME\" --zone=\"$ZONE\"\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Install redis-cli on the VM<\/h3>\n\n\n\n<p>On the VM:<\/p>\n\n\n\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get install -y redis-tools\nredis-cli --version\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> <code>redis-cli<\/code> is installed and prints a version.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Connect to Memorystore for Redis Cluster and run commands<\/h3>\n\n\n\n<p>You need the cluster endpoint (often a discovery endpoint). Get it from the Console cluster details page. If you created via <code>gcloud<\/code>, you may be able to describe the cluster and extract endpoint fields:<\/p>\n\n\n\n<pre><code class=\"language-bash\"># Run from Cloud Shell (not inside VM) if you prefer:\ngcloud redis clusters list --region=\"$REGION\"\ngcloud redis clusters describe CLUSTER_NAME --region=\"$REGION\"\n<\/code><\/pre>\n\n\n\n<blockquote>\n<p>The exact field names depend on the API. Use the describe output to locate endpoint\/host\/port details.<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">6.1 Connect using cluster mode<\/h4>\n\n\n\n<p>On the VM:<\/p>\n\n\n\n<pre><code class=\"language-bash\">export REDIS_HOST=\"YOUR_CLUSTER_ENDPOINT\"\nexport REDIS_PORT=\"6379\"\n\nredis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" PING\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You get <code>PONG<\/code>.<\/p>\n\n\n\n<p>If TLS is enabled (only if your cluster is configured for it), you may need:<\/p>\n\n\n\n<pre><code class=\"language-bash\">redis-cli -c --tls -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" PING\n<\/code><\/pre>\n\n\n\n<p>If AUTH is enabled, you may need to pass a password (avoid putting secrets in shell history in real environments):\n&#8211; Use <code>redis-cli -a 'PASSWORD' ...<\/code> or configure your client securely.<\/p>\n\n\n\n<p>Because auth\/TLS support can vary by configuration and product release, <strong>verify the current authentication instructions in official docs<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6.2 Write and read keys<\/h4>\n\n\n\n<pre><code class=\"language-bash\">redis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" SET user:1001 \"alice\"\nredis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" GET user:1001\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> GET returns <code>alice<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6.3 Demonstrate TTL behavior (cache-like use)<\/h4>\n\n\n\n<pre><code class=\"language-bash\">redis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" SETEX cache:item:42 30 \"hello\"\nredis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" TTL cache:item:42\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> TTL returns a value close to 30 seconds.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6.4 Demonstrate sharding awareness (slot calculation)<\/h4>\n\n\n\n<p>Redis Cluster assigns keys to hash slots. You can inspect the slot:<\/p>\n\n\n\n<pre><code class=\"language-bash\">redis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" CLUSTER KEYSLOT user:1001\nredis-cli -c -h \"$REDIS_HOST\" -p \"$REDIS_PORT\" CLUSTER KEYSLOT cache:item:42\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You see numeric slot IDs (0\u201316383).<\/p>\n\n\n\n<blockquote>\n<p>If your service restricts administrative commands like <code>CLUSTER<\/code>, you may receive an error. Many managed services limit certain commands. If so, rely on application-level behavior and metrics for validation.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use this checklist to confirm success:\n&#8211; Cluster status is <strong>Ready<\/strong> in the Console.\n&#8211; VM can <code>PING<\/code> the cluster endpoint and receives <code>PONG<\/code>.\n&#8211; Basic <code>SET<\/code>\/<code>GET<\/code> works.\n&#8211; TTL commands behave as expected.\n&#8211; Your client uses cluster mode (<code>redis-cli -c<\/code>), not standalone mode.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Can\u2019t connect \/ timeout<\/strong>\n   &#8211; Ensure the VM is in the <strong>same region<\/strong> and <strong>same VPC<\/strong> (or otherwise supported network path) as the cluster.\n   &#8211; Confirm routes and firewall rules allow egress from the VM to the cluster endpoint\/port.\n   &#8211; Verify the cluster endpoint is correct (hostname\/IP and port).<\/p>\n<\/li>\n<li>\n<p><strong>(error) MOVED &#8230;<\/strong>\n   &#8211; This is normal in Redis Cluster when using a non-cluster-aware client.\n   &#8211; Fix: use a cluster-capable client. For <code>redis-cli<\/code>, use <code>-c<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>NOAUTH Authentication required<\/strong>\n   &#8211; Auth is enabled on the cluster.\n   &#8211; Fix: supply the password or configure your app\u2019s secret management properly.\n   &#8211; Use Secret Manager for storing secrets in real deployments.<\/p>\n<\/li>\n<li>\n<p><strong>TLS required<\/strong>\n   &#8211; If the cluster requires TLS, connect with <code>--tls<\/code> and ensure CA\/trust settings if needed (verify exact managed service TLS details in docs).<\/p>\n<\/li>\n<li>\n<p><strong>Command not allowed \/ disabled command<\/strong>\n   &#8211; Managed services often disable risky commands (for example, <code>CONFIG<\/code>, <code>DEBUG<\/code>, etc.).\n   &#8211; Fix: adjust operational approach. Use supported admin operations via Google Cloud APIs and Monitoring.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To stop charges, delete resources.<\/p>\n\n\n\n<p>1) Delete the VM:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud compute instances delete \"$VM_NAME\" --zone=\"$ZONE\"\n<\/code><\/pre>\n\n\n\n<p>2) Delete the Redis Cluster (prefer Console if you created it there, or use gcloud if supported):<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud redis clusters delete CLUSTER_NAME --region=\"$REGION\"\n<\/code><\/pre>\n\n\n\n<p>3) If you created a lab VPC, delete firewall rule, subnet, and network:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud compute firewall-rules delete allow-internal-lab\ngcloud compute networks subnets delete \"$SUBNET\" --region=\"$REGION\"\ngcloud compute networks delete \"$NETWORK\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> No running VM or Redis Cluster resources remain, reducing ongoing costs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Co-locate clients and cluster in the same region<\/strong> to minimize latency and network cost.<\/li>\n<li><strong>Use Redis as a cache or transient state store<\/strong>, not your system of record (unless you have explicitly validated durability requirements against product capabilities).<\/li>\n<li><strong>Design keys intentionally<\/strong>:<\/li>\n<li>Use namespaces\/prefixes (<code>app:feature:...<\/code>, <code>tenant:123:...<\/code>)<\/li>\n<li>Keep key sizes small<\/li>\n<li><strong>Account for cluster-mode constraints<\/strong>:<\/li>\n<li>Avoid multi-key operations across different hash slots.<\/li>\n<li>If you must use multi-key operations, use Redis Cluster hash tags (<code>{...}<\/code>) to place related keys in the same slot, e.g., <code>user:{1001}:profile<\/code> and <code>user:{1001}:settings<\/code>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Grant least privilege:<\/li>\n<li>Separate roles for operators vs. developers vs. CI systems.<\/li>\n<li>Use separate projects or folders for environments (dev\/stage\/prod) where feasible.<\/li>\n<li>Apply organization policies:<\/li>\n<li>Restrict allowed regions<\/li>\n<li>Restrict allowed networks<\/li>\n<li>Enforce labels\/tags policies (where applicable)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with conservative sizing; scale based on observed metrics.<\/li>\n<li>Set TTLs for cache entries to prevent uncontrolled memory growth.<\/li>\n<li>Build automated cleanup for ephemeral environments (CI, previews).<\/li>\n<li>Use labels:<\/li>\n<li><code>env=dev|stage|prod<\/code><\/li>\n<li><code>owner=team-name<\/code><\/li>\n<li><code>cost-center=...<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose a cluster-aware client library optimized for Redis Cluster.<\/li>\n<li>Use pipelining where appropriate (while being mindful of cluster routing).<\/li>\n<li>Monitor:<\/li>\n<li><code>used_memory<\/code>-style metrics (or managed equivalents)<\/li>\n<li>evictions<\/li>\n<li>command latency indicators (if available)<\/li>\n<li>Avoid very large values; prefer storing IDs and fetching larger objects from a durable store (or compress values where appropriate).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For production, prefer HA settings (replicas, multi-zone where supported).<\/li>\n<li>Implement client retry logic with backoff and jitter.<\/li>\n<li>Implement circuit breakers to protect your primary database if cache fails (avoid cache stampede).<\/li>\n<li>Use cache-aside pattern carefully:<\/li>\n<li>Locking (distributed locks) can help, but ensure lock design is correct and resilient.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use Cloud Monitoring dashboards + alerts:<\/li>\n<li>High memory usage<\/li>\n<li>High evictions<\/li>\n<li>Connection spikes<\/li>\n<li>Node unavailability<\/li>\n<li>Define runbooks for:<\/li>\n<li>cache flush events (intentional and accidental)<\/li>\n<li>connection failures<\/li>\n<li>latency regressions<\/li>\n<li>Load test before scaling changes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Naming:<\/li>\n<li><code>redisclu-&lt;app&gt;-&lt;env&gt;-&lt;region&gt;<\/code> (example pattern)<\/li>\n<li>Labels:<\/li>\n<li><code>app<\/code>, <code>env<\/code>, <code>team<\/code>, <code>data-classification<\/code> (if applicable)<\/li>\n<li>Keep consistent across all Google Cloud Databases for easier cost allocation and inventory.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IAM controls management-plane operations<\/strong>: who can create, modify, delete clusters, and view configurations.<\/li>\n<li><strong>Data-plane access is network-driven<\/strong>: clients must be able to route to the private endpoint.<\/li>\n<li>Where supported, use <strong>Redis AUTH<\/strong> (password) and\/or <strong>TLS<\/strong> to protect data in transit.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>At rest:<\/strong> Managed services generally encrypt storage at rest by default on Google Cloud, but confirm the service\u2019s specific encryption statement in docs.<\/li>\n<li><strong>In transit:<\/strong> If the service supports TLS, enable it for sensitive environments. Verify exact requirements and client configuration steps in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer private-only access. Avoid any architecture that exposes Redis endpoints publicly.<\/li>\n<li>Restrict which subnets\/workloads can reach the cluster:<\/li>\n<li>Use network segmentation (separate subnets)<\/li>\n<li>Limit firewall rules to only required sources and ports<\/li>\n<li>Be cautious with hybrid connectivity (VPN\/Interconnect):<\/li>\n<li>Latency can be unpredictable<\/li>\n<li>On-prem access expands the trust boundary<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If using Redis AUTH:<\/li>\n<li>Store passwords in <strong>Secret Manager<\/strong> (https:\/\/cloud.google.com\/secret-manager)<\/li>\n<li>Rotate secrets periodically and after staff changes\/incidents<\/li>\n<li>Avoid embedding secrets in container images, code, or startup scripts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and retain <strong>Cloud Audit Logs<\/strong> for admin activities.<\/li>\n<li>Consider exporting logs to a central security project if you have an org-level logging strategy.<\/li>\n<li>For application-level security monitoring:<\/li>\n<li>log Redis connection errors<\/li>\n<li>capture auth failures (at app side if managed service doesn\u2019t provide detailed auth logs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data classification: treat Redis as potentially containing sensitive data (sessions, tokens).<\/li>\n<li>Ensure retention and deletion expectations are aligned with in-memory caching behavior.<\/li>\n<li>For regulated workloads, confirm:<\/li>\n<li>region residency<\/li>\n<li>encryption controls<\/li>\n<li>auditability<\/li>\n<li>access controls\n  in official Google Cloud compliance documentation and the Memorystore service documentation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Assuming IAM alone secures data-plane access (it doesn\u2019t).<\/li>\n<li>Placing cluster in a broad\/shared VPC without network segmentation.<\/li>\n<li>Storing long-lived secrets in environment variables without rotation.<\/li>\n<li>Using Redis as the primary store for critical durable data without validating persistence guarantees.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use private networking only.<\/li>\n<li>Enable auth\/TLS if supported and required by policy.<\/li>\n<li>Restrict management plane permissions (least privilege).<\/li>\n<li>Add monitoring alerts for unusual connection spikes and memory growth.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Because product limits change, treat this section as a practical checklist and verify exact limits in official docs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Known Redis Cluster constraints (generic to Redis Cluster)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multi-key operations require keys in the same hash slot (use hash tags when needed).<\/li>\n<li>Some commands behave differently or are restricted in cluster mode.<\/li>\n<li>Client libraries must handle redirects (MOVED\/ASK) correctly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Managed service restrictions (common in managed Redis)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Some administrative commands may be disabled (for safety).<\/li>\n<li>Direct access to underlying OS\/filesystem is not available.<\/li>\n<li>Maintenance windows\/upgrades are controlled by service policy (with some configuration options depending on product).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Project quotas on number of clusters, shards, and total capacity.<\/li>\n<li>Network-related quotas (subnets, IP ranges, Private Service connectivity resources).\nCheck Cloud Console <strong>Quotas<\/strong> and Memorystore docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Regional constraints<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Not all regions support the service.<\/li>\n<li>Some features may be region-limited or release-staged.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing surprises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HA replicas can significantly increase cost.<\/li>\n<li>Cross-region traffic can create egress charges and latency issues.<\/li>\n<li>Leaving dev\/test clusters running is a common cost leak.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility issues<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Not all Redis clients support cluster mode equally well.<\/li>\n<li>Some frameworks default to non-cluster connections; you must configure cluster endpoints properly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cache stampede: if Redis becomes unavailable, your backing database might get overwhelmed.<\/li>\n<li>Hot keys: a single heavily accessed key can overload a shard even if total capacity is sufficient.<\/li>\n<li>Memory fragmentation and overhead: usable capacity is less than raw provisioned memory; plan headroom.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Migration challenges<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Moving from standalone Redis to Redis Cluster often requires:<\/li>\n<li>client library changes<\/li>\n<li>key design changes (hash tags)<\/li>\n<li>careful rollout\/testing<\/li>\n<li>Migrating between Redis providers can expose differences in disabled commands, TLS requirements, and endpoint models.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Memorystore for Redis Cluster is one option among several cache and in-memory data approaches.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Alternatives within Google Cloud (Databases and related services)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Memorystore for Redis (non-cluster)<\/strong>: simpler for small\/medium workloads that fit on a single primary with replicas.<\/li>\n<li><strong>Memorystore for Redis Enterprise<\/strong>: for advanced enterprise Redis features (exact features depend on the product; verify).<\/li>\n<li><strong>Cloud Bigtable \/ Cloud Spanner \/ Cloud SQL<\/strong>: not caches; durable databases with different latency\/cost characteristics.<\/li>\n<li><strong>Firestore \/ BigQuery<\/strong>: different use cases; not in-memory caches.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Alternatives in other clouds<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS ElastiCache for Redis (Cluster Mode Enabled)<\/strong><\/li>\n<li><strong>Azure Cache for Redis (cluster\/enterprise tiers)<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Self-managed alternatives<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Redis Cluster on Compute Engine VMs<\/li>\n<li>Redis on GKE (StatefulSets) with persistent disks (complex; requires strong ops maturity)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Comparison table<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Memorystore for Redis Cluster (Google Cloud)<\/strong><\/td>\n<td>Sharded Redis workloads on Google Cloud needing managed ops<\/td>\n<td>Managed service, private networking, integrates with Cloud Monitoring<\/td>\n<td>Cluster-mode complexity, possible command restrictions, capacity-based cost<\/td>\n<td>When you need Redis Cluster scaling and want managed operations on Google Cloud<\/td>\n<\/tr>\n<tr>\n<td>Memorystore for Redis (Google Cloud, non-cluster)<\/td>\n<td>Workloads that fit in a single Redis primary (with replicas)<\/td>\n<td>Simpler client behavior, often easier operations<\/td>\n<td>Single-node capacity ceiling<\/td>\n<td>When you want Redis but don\u2019t need sharding yet<\/td>\n<\/tr>\n<tr>\n<td>Memorystore for Redis Enterprise (Google Cloud)<\/td>\n<td>Enterprise Redis features and governance requirements<\/td>\n<td>Enterprise capabilities (verify), managed offering<\/td>\n<td>Different pricing\/packaging; feature set differs from OSS<\/td>\n<td>When you need enterprise features beyond OSS cluster mode<\/td>\n<\/tr>\n<tr>\n<td>Self-managed Redis Cluster on GCE\/GKE<\/td>\n<td>Maximum control and customization<\/td>\n<td>Full control of configs\/modules, custom networking<\/td>\n<td>High ops burden, patching, HA complexity<\/td>\n<td>When you have strict requirements not met by managed service and can operate it reliably<\/td>\n<\/tr>\n<tr>\n<td>AWS ElastiCache for Redis (cluster mode)<\/td>\n<td>Redis Cluster on AWS<\/td>\n<td>Mature managed Redis ecosystem<\/td>\n<td>Cloud-specific networking\/IAM differences<\/td>\n<td>When your workloads are on AWS<\/td>\n<\/tr>\n<tr>\n<td>Azure Cache for Redis (cluster\/enterprise)<\/td>\n<td>Redis caching on Azure<\/td>\n<td>Strong Azure integration<\/td>\n<td>Cloud-specific constraints<\/td>\n<td>When your workloads are on Azure<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Multi-region SaaS with regional caching tiers<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A SaaS platform serves customers globally. The primary database is Cloud Spanner. The platform needs a low-latency cache for user profiles and authorization context to reduce database reads and stabilize latency during peaks.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Per-region GKE clusters run microservices.<\/li>\n<li>Each region has its own Memorystore for Redis Cluster for hot caches (cache-aside).<\/li>\n<li>Services use consistent key patterns and TTLs; critical data remains in Spanner.<\/li>\n<li>Cloud Monitoring alerts on memory usage and eviction spikes.<\/li>\n<li><strong>Why Memorystore for Redis Cluster was chosen:<\/strong><\/li>\n<li>Horizontal scaling via sharding for large key cardinality and high throughput.<\/li>\n<li>Managed operations reduce operational overhead compared to self-managed Redis clusters.<\/li>\n<li>Private VPC connectivity aligns with security requirements.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Reduced Spanner read load and lower tail latency.<\/li>\n<li>Better resilience during traffic spikes.<\/li>\n<li>Clear SLOs based on cache hit ratio and latency.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: High-traffic API rate limiting and caching<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A small team runs a Cloud Run-based API. They need rate limiting to control abuse and caching for expensive third-party API calls.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Cloud Run services connect to VPC via Serverless VPC Access.<\/li>\n<li>Memorystore for Redis Cluster stores rate-limit counters and cached third-party responses with short TTLs.<\/li>\n<li>Secret Manager stores Redis credentials if auth is enabled.<\/li>\n<li><strong>Why Memorystore for Redis Cluster was chosen:<\/strong><\/li>\n<li>The team wants managed Redis without VM operations.<\/li>\n<li>Sharding provides growth path as traffic increases.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Predictable API behavior under load with enforced throttling.<\/li>\n<li>Lower third-party API spend and improved response times.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<p>1) <strong>Is Memorystore for Redis Cluster the same as Memorystore for Redis?<\/strong><br\/>\nNo. Memorystore for Redis Cluster is designed for Redis in <strong>cluster mode (sharded)<\/strong>. Memorystore for Redis (non-cluster) is typically a single primary with replicas (depending on tier). Choose based on scaling needs and client compatibility.<\/p>\n\n\n\n<p>2) <strong>Do I need a special Redis client?<\/strong><br\/>\nYes, you generally need a <strong>cluster-aware Redis client<\/strong> that supports Redis Cluster redirects. For testing with <code>redis-cli<\/code>, use <code>redis-cli -c<\/code>.<\/p>\n\n\n\n<p>3) <strong>Can I connect from Cloud Shell?<\/strong><br\/>\nUsually no, because Cloud Shell is not in your VPC by default. Use a VM, GKE pod, or Cloud Run with VPC access that can route privately to the cluster.<\/p>\n\n\n\n<p>4) <strong>Is there a public IP endpoint?<\/strong><br\/>\nTypically Memorystore services use private connectivity. Public exposure is generally not the model. Verify the current networking model in official docs.<\/p>\n\n\n\n<p>5) <strong>Does Redis Cluster support multi-key transactions?<\/strong><br\/>\nRedis Cluster has limitations for multi-key operations unless keys are in the same hash slot (use hash tags). Validate your app\u2019s usage patterns.<\/p>\n\n\n\n<p>6) <strong>Can I use Redis as a durable database?<\/strong><br\/>\nRedis is in-memory and is commonly used as a cache or transient store. If you need durability, confirm what persistence\/backups are supported by Memorystore for Redis Cluster (and whether you should use another Google Cloud Database).<\/p>\n\n\n\n<p>7) <strong>How do I size a cluster?<\/strong><br\/>\nStart from:\n&#8211; peak key cardinality and average value size<br\/>\n&#8211; memory headroom (fragmentation + spikes)<br\/>\n&#8211; target hit ratio and QPS<br\/>\nThen validate with load tests and monitor evictions and latency.<\/p>\n\n\n\n<p>8) <strong>What happens during node failure?<\/strong><br\/>\nRedis Cluster with replicas can fail over. Exact behavior depends on the managed service design and your configuration. Verify RPO\/RTO expectations in the SLA and docs, and test client behavior.<\/p>\n\n\n\n<p>9) <strong>Does Memorystore for Redis Cluster support TLS?<\/strong><br\/>\nIt may, depending on current product capabilities and settings. Check the official documentation for in-transit encryption and client configuration requirements.<\/p>\n\n\n\n<p>10) <strong>Does it support Redis AUTH (password)?<\/strong><br\/>\nIt may, depending on configuration. Prefer Secret Manager and rotation if you use AUTH. Verify exact support in docs.<\/p>\n\n\n\n<p>11) <strong>Can I use it with GKE?<\/strong><br\/>\nYes, commonly. Ensure your GKE nodes\/pods have VPC connectivity to the cluster endpoint and your client library is cluster-aware.<\/p>\n\n\n\n<p>12) <strong>Can I scale the cluster without downtime?<\/strong><br\/>\nScaling and resharding can impact performance and may have operational considerations. Check the service documentation for scaling procedures, limitations, and expected impact.<\/p>\n\n\n\n<p>13) <strong>What metrics should I alert on?<\/strong><br\/>\nCommon alerts:\n&#8211; high memory utilization<br\/>\n&#8211; eviction spikes<br\/>\n&#8211; connection spikes<br\/>\n&#8211; elevated latency (if exposed)<br\/>\n&#8211; node unavailability events<br\/>\nExact metrics depend on what Memorystore exposes.<\/p>\n\n\n\n<p>14) <strong>How do I prevent cache stampede?<\/strong><br\/>\nUse:\n&#8211; request coalescing \/ singleflight patterns<br\/>\n&#8211; jittered TTLs<br\/>\n&#8211; background refresh<br\/>\n&#8211; circuit breakers and fallbacks<\/p>\n\n\n\n<p>15) <strong>Is Memorystore for Redis Cluster suitable for pub\/sub?<\/strong><br\/>\nRedis supports pub\/sub, but cluster-mode pub\/sub behavior and managed-service limitations can affect design. Validate against official docs and test your use case; for eventing, consider Pub\/Sub.<\/p>\n\n\n\n<p>16) <strong>How do I migrate from standalone Redis to Redis Cluster?<\/strong><br\/>\nPlan for:\n&#8211; client changes<br\/>\n&#8211; key hash tags for multi-key patterns<br\/>\n&#8211; incremental cutover<br\/>\n&#8211; load testing and rollback strategy<br\/>\nAlso verify any managed-service command restrictions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Memorystore for Redis Cluster<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>Memorystore for Redis Cluster docs: https:\/\/cloud.google.com\/memorystore\/docs\/redis\/redis-cluster<\/td>\n<td>Canonical feature set, setup steps, networking requirements, limitations<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Memorystore pricing: https:\/\/cloud.google.com\/memorystore\/pricing<\/td>\n<td>Current SKUs and pricing dimensions (region dependent)<\/td>\n<\/tr>\n<tr>\n<td>Cost estimation<\/td>\n<td>Google Cloud Pricing Calculator: https:\/\/cloud.google.com\/products\/calculator<\/td>\n<td>Build estimates for different shard\/replica sizes and regions<\/td>\n<\/tr>\n<tr>\n<td>Official product overview<\/td>\n<td>Memorystore overview: https:\/\/cloud.google.com\/memorystore<\/td>\n<td>Product positioning across Redis\/Memcached\/Enterprise options<\/td>\n<\/tr>\n<tr>\n<td>CLI reference<\/td>\n<td>Google Cloud CLI docs: https:\/\/cloud.google.com\/sdk\/gcloud<\/td>\n<td>How to install and use <code>gcloud<\/code> for automation<\/td>\n<\/tr>\n<tr>\n<td>Monitoring<\/td>\n<td>Cloud Monitoring: https:\/\/cloud.google.com\/monitoring<\/td>\n<td>Dashboards, alerting, SLOs for operational readiness<\/td>\n<\/tr>\n<tr>\n<td>Logging\/Audit<\/td>\n<td>Cloud Audit Logs: https:\/\/cloud.google.com\/logging\/docs\/audit<\/td>\n<td>Track admin actions on Memorystore resources<\/td>\n<\/tr>\n<tr>\n<td>Networking<\/td>\n<td>VPC overview: https:\/\/cloud.google.com\/vpc\/docs\/overview<\/td>\n<td>Understand private routing, subnets, firewall rules<\/td>\n<\/tr>\n<tr>\n<td>Secrets<\/td>\n<td>Secret Manager: https:\/\/cloud.google.com\/secret-manager<\/td>\n<td>Store Redis auth credentials securely (if used)<\/td>\n<\/tr>\n<tr>\n<td>Redis Cluster concepts<\/td>\n<td>Redis Cluster specification (Redis docs): https:\/\/redis.io\/docs\/latest\/operate\/oss_and_stack\/management\/scaling\/<\/td>\n<td>Understand hash slots, redirects, client behavior (general Redis knowledge)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<p>Below are training providers to explore. Offerings change; verify course outlines on each site.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, SREs, cloud engineers<\/td>\n<td>DevOps + cloud operations; may include Google Cloud and managed services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps\/SCM foundations and tooling<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations teams<\/td>\n<td>CloudOps practices, operations, monitoring<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, platform engineers<\/td>\n<td>SRE principles, reliability engineering, monitoring<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops teams adopting AIOps<\/td>\n<td>Observability, automation, AIOps concepts<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<p>These sites are presented as training resources\/platforms to explore. Verify specific trainer profiles and course content on each site.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>Cloud\/DevOps training content<\/td>\n<td>Students and practitioners<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training<\/td>\n<td>Beginners to intermediate DevOps learners<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>DevOps consulting\/training marketplace style<\/td>\n<td>Teams seeking hands-on help<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training<\/td>\n<td>Ops teams needing troubleshooting guidance<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<p>These companies may help with architecture, migration planning, cost optimization, security reviews, and operations. Validate service details directly with each provider.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company Name<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting<\/td>\n<td>Architecture and implementation support<\/td>\n<td>Designing private networking to Memorystore for Redis Cluster; setting up monitoring and alerting<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps\/Cloud consulting and training<\/td>\n<td>Enablement and delivery<\/td>\n<td>Building CI\/CD + IaC to provision Memorystore for Redis Cluster; operational runbooks<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting<\/td>\n<td>Operations and transformation<\/td>\n<td>Performance troubleshooting; cost reviews; platform engineering practices<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Redis fundamentals:<\/li>\n<li>key\/value model, TTLs, eviction policies<\/li>\n<li>data structures (strings, hashes, lists, sets, sorted sets)<\/li>\n<li>Redis Cluster basics:<\/li>\n<li>hash slots, redirects (MOVED\/ASK)<\/li>\n<li>hash tags for multi-key patterns<\/li>\n<li>Google Cloud foundations:<\/li>\n<li>projects, IAM, service accounts<\/li>\n<li>VPC networking (subnets, firewall rules, private connectivity)<\/li>\n<li>Observability basics:<\/li>\n<li>metrics, logs, alerting<\/li>\n<li>SLO\/SLI concepts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Advanced caching strategies:<\/li>\n<li>cache-aside vs write-through vs write-behind<\/li>\n<li>stampede prevention and probabilistic early refresh<\/li>\n<li>Infrastructure-as-Code:<\/li>\n<li>Terraform on Google Cloud (verify current support for Redis Cluster resources)<\/li>\n<li>Security hardening:<\/li>\n<li>Secret Manager + rotation<\/li>\n<li>org policies, network segmentation, VPC Service Controls concepts (where applicable)<\/li>\n<li>Distributed systems patterns:<\/li>\n<li>idempotency, rate limiting algorithms, distributed locks (carefully)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud engineer \/ platform engineer<\/li>\n<li>DevOps engineer \/ SRE<\/li>\n<li>Backend engineer (performance and scalability)<\/li>\n<li>Cloud architect \/ solutions engineer<\/li>\n<li>Security engineer (network and access controls)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>There is no single \u201cMemorystore certification,\u201d but relevant Google Cloud certifications include:\n&#8211; Associate Cloud Engineer\n&#8211; Professional Cloud Architect\n&#8211; Professional Cloud DevOps Engineer\nCheck Google Cloud certification catalog: https:\/\/cloud.google.com\/learn\/certification<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Cache-aside API<\/strong>: Build a small API (Cloud Run or GKE) that caches DB reads in Redis Cluster with TTL and metrics.<\/li>\n<li><strong>Rate limiter<\/strong>: Implement per-user rate limiting with Redis counters and sliding windows.<\/li>\n<li><strong>Leaderboard<\/strong>: Use sorted sets for a leaderboard; test cluster-aware client behavior.<\/li>\n<li><strong>Multi-tenant key strategy<\/strong>: Implement key prefixes, TTL policies, and per-tenant quotas.<\/li>\n<li><strong>Operational dashboard<\/strong>: Create Cloud Monitoring dashboards and alerts for memory\/evictions\/connections.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Redis<\/strong>: An in-memory data store commonly used for caching and transient state.<\/li>\n<li><strong>Redis Cluster<\/strong>: Redis deployment mode that shards data across multiple nodes using hash slots.<\/li>\n<li><strong>Shard<\/strong>: A partition of data in a distributed system; in Redis Cluster, primaries own ranges of hash slots.<\/li>\n<li><strong>Replica<\/strong>: A copy of shard data used for redundancy and failover (and sometimes read scaling).<\/li>\n<li><strong>Hash slot<\/strong>: Redis Cluster divides the keyspace into 16,384 slots; each key maps to a slot.<\/li>\n<li><strong>Hash tag<\/strong>: A substring in <code>{}<\/code> in a key name that forces multiple keys to map to the same hash slot.<\/li>\n<li><strong>Cache-aside<\/strong>: Application checks cache first; on miss, reads from DB and writes to cache.<\/li>\n<li><strong>TTL (Time to Live)<\/strong>: Expiration time for a key; after TTL, the key is deleted.<\/li>\n<li><strong>Eviction<\/strong>: Removal of keys when memory is full, based on eviction policy.<\/li>\n<li><strong>VPC (Virtual Private Cloud)<\/strong>: Private network environment in Google Cloud.<\/li>\n<li><strong>Private connectivity<\/strong>: Networking model where services are reachable via private IP routing rather than public internet.<\/li>\n<li><strong>IAM<\/strong>: Identity and Access Management; controls who can manage cloud resources.<\/li>\n<li><strong>Cloud Monitoring<\/strong>: Google Cloud service for metrics, dashboards, and alerting.<\/li>\n<li><strong>Cloud Audit Logs<\/strong>: Logs of administrative and data access actions for Google Cloud resources.<\/li>\n<li><strong>Egress<\/strong>: Outbound network traffic that may incur charges.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Memorystore for Redis Cluster is a <strong>Google Cloud Databases<\/strong> service for running <strong>Redis in cluster mode<\/strong> as a managed, private, in-memory data store. It matters when your workloads need <strong>low-latency access<\/strong> and <strong>horizontal scaling<\/strong> beyond what a single Redis node can provide.<\/p>\n\n\n\n<p>Architecturally, it fits as a regional cache\/state tier close to your compute (GKE, Compute Engine, Cloud Run with VPC access). Cost is primarily <strong>capacity-based<\/strong> (shards, replicas, sizing, runtime hours) plus network egress and operational telemetry. Security depends on <strong>private networking<\/strong>, tight <strong>IAM<\/strong> for management operations, and using <strong>auth\/TLS<\/strong> where supported and required.<\/p>\n\n\n\n<p>Use Memorystore for Redis Cluster when you need Redis Cluster scaling with managed operations; avoid it for workloads needing a durable system of record or designs incompatible with cluster-mode constraints. Next, deepen your skills by learning Redis Cluster key design, cluster-aware client configuration, and Google Cloud networking patterns\u2014and then implement a production-ready cache-aside service with monitoring and alerting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Databases<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,51],"tags":[],"class_list":["post-683","post","type-post","status-publish","format-standard","hentry","category-databases","category-google-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=683"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/683\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}