<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redis on Support Tools</title><link>https://support.tools/tags/redis/</link><description>Recent content in Redis on Support Tools</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 23 Oct 2026 00:00:00 -0500</lastBuildDate><atom:link href="https://support.tools/tags/redis/index.xml" rel="self" type="application/rss+xml"/><item><title>NSQ vs Redis Messaging Systems: Production Architecture Comparison for High-Throughput Distributed Applications</title><link>https://support.tools/nsq-redis-messaging-systems-production-architecture-comparison/</link><pubDate>Tue, 13 Oct 2026 00:00:00 -0500</pubDate><guid>https://support.tools/nsq-redis-messaging-systems-production-architecture-comparison/</guid><description>&lt;p&gt;When our real-time analytics platform started processing 50 million events per day, our homegrown message queue implementation collapsed under the load. With 200ms latency spikes causing data loss and cascading failures across our microservices architecture, we faced a critical decision: NSQ or Redis? This is the complete story of how we evaluated, tested, and deployed both systems in production, learning hard lessons about message queue architecture along the way.&lt;/p&gt;&#10;&lt;p&gt;This comprehensive guide provides an in-depth comparison of NSQ and Redis as messaging systems, covering architecture patterns, performance characteristics, operational considerations, and real-world decision criteria for selecting the right solution for your distributed application.&lt;/p&gt;</description></item><item><title>Distributed Peer Indexing for Microservice Coordination</title><link>https://support.tools/distributed-peer-indexing-for-microservice-coordination/</link><pubDate>Tue, 06 Jan 2026 09:00:00 -0500</pubDate><guid>https://support.tools/distributed-peer-indexing-for-microservice-coordination/</guid><description>&lt;p&gt;Distributed systems face a fundamental challenge: how to coordinate work across dynamically scaling instances without a central coordinator. This article explores a practical approach to distributed peer indexing that allows microservices to autonomously determine their role in processing tasks, using Redis as a lightweight consensus mechanism.&lt;/p&gt;</description></item><item><title>Decentralized Request Throttling for Distributed API Gateways</title><link>https://support.tools/decentralized-request-throttling-for-distributed-api-gateways/</link><pubDate>Tue, 23 Dec 2025 09:00:00 -0500</pubDate><guid>https://support.tools/decentralized-request-throttling-for-distributed-api-gateways/</guid><description>&lt;p&gt;Rate limiting is a critical aspect of API management, but implementing it in distributed environments presents unique challenges. This article explores a practical approach to decentralized request throttling that works efficiently across multiple API gateway instances without requiring per-request coordination.&lt;/p&gt;</description></item><item><title>Cache Misses Are Killing Your Application: How to Benchmark and Optimize Cache Hit Ratios</title><link>https://support.tools/benchmarking-optimizing-cache-hit-ratios/</link><pubDate>Tue, 30 Sep 2025 09:00:00 -0500</pubDate><guid>https://support.tools/benchmarking-optimizing-cache-hit-ratios/</guid><description>&lt;p&gt;When applications start slowing down, our instinct is often to throw more hardware at the problem or spend days optimizing database queries. However, one of the most significant yet overlooked performance culprits is poor cache utilization. This article explores how cache misses silently degrade performance and provides practical strategies to benchmark and optimize your cache hit ratios.&lt;/p&gt;</description></item><item><title>ElastiCache Redis Replication Group and RDS Proxy Limits</title><link>https://support.tools/post/aws-database-services-architecture-guide/</link><pubDate>Thu, 04 Sep 2025 09:00:00 -0500</pubDate><guid>https://support.tools/post/aws-database-services-architecture-guide/</guid><description>&lt;h1 id="elasticache-redis-replication-group-and-rds-proxy-limits"&gt;ElastiCache Redis Replication Group and RDS Proxy Limits&lt;/h1&gt;&#10;&lt;p&gt;Two settings cause most of the confusion when you put ElastiCache in front of RDS and RDS Proxy between the application and the database: &lt;code&gt;num_cache_clusters&lt;/code&gt; on the ElastiCache replication group, and the connection ceiling RDS Proxy reports as &lt;code&gt;MaxDatabaseConnectionsAllowed&lt;/code&gt;. This page answers both, then shows the full RDS, RDS Proxy and ElastiCache architecture in Terraform.&lt;/p&gt;&#10;&lt;h2 id="quick-answer"&gt;Quick answer&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;code&gt;num_cache_clusters&lt;/code&gt; in &lt;code&gt;aws_elasticache_replication_group&lt;/code&gt;&lt;/strong&gt; is the total number of nodes (one primary plus read replicas) in a replication group with cluster mode disabled. &lt;code&gt;num_cache_clusters = 3&lt;/code&gt; means one primary and two replicas. It must be at least 2 when &lt;code&gt;automatic_failover_enabled&lt;/code&gt; or &lt;code&gt;multi_az_enabled&lt;/code&gt; is true, defaults to 1, and conflicts with &lt;code&gt;num_node_groups&lt;/code&gt; and &lt;code&gt;replicas_per_node_group&lt;/code&gt;, which you use instead for cluster mode enabled (sharded) groups.&lt;/p&gt;</description></item><item><title>Application-Level vs CDN-Level Caching: Strategic Implementation Guide</title><link>https://support.tools/application-level-vs-cdn-level-caching-strategy/</link><pubDate>Thu, 21 Aug 2025 09:00:00 -0500</pubDate><guid>https://support.tools/application-level-vs-cdn-level-caching-strategy/</guid><description>&lt;p&gt;Effective caching is fundamental to scaling web applications. This article explores the strategic differences between application-level and CDN-level caching, with practical guidance on what to cache where and why.&lt;/p&gt;</description></item><item><title>Redis Is Open Source Again. But Is It Too Late?</title><link>https://support.tools/redis-open-source-again/</link><pubDate>Mon, 19 May 2025 00:00:00 -0500</pubDate><guid>https://support.tools/redis-open-source-again/</guid><description>&lt;p&gt;Redis 8 just landed—and with it, a stunning twist in the open source world. After a controversial license change in 2024 that sparked community uproar and gave rise to forks like Valkey, Redis is back under an OSI-approved license: &lt;strong&gt;AGPLv3&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;But the timing raises an uncomfortable question: &lt;em&gt;Is it too late?&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Harbor Redis Crashlooping</title><link>https://support.tools/post/harbor-redis-crashlooping/</link><pubDate>Tue, 12 Jul 2022 18:21:00 -0500</pubDate><guid>https://support.tools/post/harbor-redis-crashlooping/</guid><description>&lt;p&gt;My Harbor server went offline when I patched one of my RKE2 clusters, which caused pods to go into ImagePullBackoff. Within a few minutes, I noticed that Redis was crashlooping with the following error:&lt;/p&gt;&#10;&lt;div class="code-block" data-copy-label="Copy bash code, block 1"&gt;&#10; &lt;div class="code-block-header" data-pagefind-ignore&gt;&lt;span class="code-block-lang"&gt;bash&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mmattox@a1ubthorp01:~/$ kubectl -n harbor logs -f harbor-redis-0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=1, just started&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:C &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.208 &lt;span class="c1"&gt;# Configuration loaded&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _.-&lt;span class="sb"&gt;``&lt;/span&gt;__ &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; _.-&lt;span class="sb"&gt;``&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;. &lt;span class="sb"&gt;`&lt;/span&gt;_. &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ Redis 6.0.16 &lt;span class="o"&gt;(&lt;/span&gt;00000000/0&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;64&lt;/span&gt; bit&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; .-&lt;span class="sb"&gt;``&lt;/span&gt; .-&lt;span class="sb"&gt;```&lt;/span&gt;. &lt;span class="sb"&gt;```&lt;/span&gt;&lt;span class="se"&gt;\/&lt;/span&gt; _.,_ &lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;-._ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;(&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39; , .-` | `, ) Running in standalone mode&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; |`-._`-...-` __...-.``-._|&amp;#39;&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; _.-&lt;span class="s1"&gt;&amp;#39;| Port: 6379&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._ `._ / _.-&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; PID: &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-./ _.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-._&lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39;| &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._`-._ _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; | http://redis.io &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-._ `-._`-.__.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-._&lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39;| &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; | `-._`-._ _.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; | &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-._ `-._`-.__.-&amp;#39;&lt;/span&gt;_.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ &lt;span class="sb"&gt;`&lt;/span&gt;-.__.-&lt;span class="s1"&gt;&amp;#39; _.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="sb"&gt;`&lt;/span&gt;-._ _.-&lt;span class="s1"&gt;&amp;#39; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; `-.__.-&amp;#39;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Server initialized&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Can&amp;#39;t handle RDB format version 10&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1:M &lt;span class="m"&gt;12&lt;/span&gt; Jul &lt;span class="m"&gt;2022&lt;/span&gt; 23:15:36.210 &lt;span class="c1"&gt;# Fatal error loading the DB: Invalid argument. Exiting.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mmattox@a1ubthorp01:~/$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item></channel></rss>