<?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 foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/redis/</link><description>Recent content in Redis on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 25 Nov 2025 09:35:45 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/redis/index.xml" rel="self" type="application/rss+xml"/><item><title>BoxLang Redis Has Landed: Enterprise-Grade Caching, Pub/Sub, and Distributed Locking</title><link>https://foojayio.github.io/website/today/boxlang-redis-has-landed-enterprise-grade-caching-pub-sub-and-distributed-locking/</link><pubDate>Tue, 25 Nov 2025 09:33:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/boxlang-redis-has-landed-enterprise-grade-caching-pub-sub-and-distributed-locking/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/boxlang-redis-has-landed-enterprise-grade-caching-pub-sub-and-distributed-locking/bx-redis-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re thrilled to announce the release of the &lt;strong&gt;BoxLang Redis Module&lt;/strong&gt; (&lt;code&gt;bx-redis&lt;/code&gt;) - a powerful addition to BoxLang that brings enterprise-grade Redis functionality directly into your applications. Whether you&amp;rsquo;re building distributed systems, implementing real-time messaging, or need high-performance caching, this module has you covered.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-the-redis-module"&gt;🎯 What is the Redis Module?&lt;/h2&gt;
&lt;p&gt;The BoxLang Redis Module provides native Redis functionality, enabling you to connect to Redis instances, clusters, or Sentinel setups with ease. It seamlessly integrates with BoxLang&amp;rsquo;s caching infrastructure while adding powerful new capabilities like publish/subscribe messaging and distributed locking.&lt;/p&gt;</description></item><item><title>Semantic Caching with SpringBoot &amp; Redis</title><link>https://foojayio.github.io/website/today/semantic-caching-with-springboot-redis/</link><pubDate>Thu, 07 Aug 2025 06:58:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/semantic-caching-with-springboot-redis/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; You&amp;rsquo;re building a semantic caching system using Spring AI and Redis to improve LLM application performance.&lt;/p&gt;
&lt;p&gt;Unlike traditional caching that requires exact query matches, semantic caching understands the meaning behind queries and can return cached responses for semantically similar questions.&lt;/p&gt;
&lt;p&gt;It works by storing query-response pairs as vector embeddings in Redis, allowing your application to retrieve cached answers for similar questions without calling the expensive LLM, reducing both latency and costs.&lt;/p&gt;</description></item><item><title>Agent Memory with Spring AI &amp; Redis</title><link>https://foojayio.github.io/website/today/agent-memory-with-spring-ai-redis/</link><pubDate>Wed, 23 Jul 2025 16:34:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/agent-memory-with-spring-ai-redis/</guid><description>&lt;h3 id="h3-0-you-re-building-an-ai-agent-with-memory-using-spring-ai-and-redis-unlike-traditional-chatbots-that-forget-previous-interactions-memory-enabled-agents-can-recall-past-conversations-and-facts-it-works-by-storing-two-types-of-memory-in-redis-short-term-conversation-history-and-long-term-facts-and-experiences-as-vectors-allowing-agents-to-provide-personalized-context-aware-responses"&gt;&lt;strong&gt;You&amp;rsquo;re building an AI agent with memory using Spring AI and Redis.&lt;/strong&gt; &lt;strong&gt;Unlike traditional chatbots that forget previous interactions, memory-enabled agents can recall past conversations and facts.&lt;/strong&gt; &lt;strong&gt;It works by storing two types of memory in Redis: short-term (conversation history) and long-term (facts and experiences as vectors), allowing agents to provide personalized, context-aware responses.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;LLMs respond to each message in isolation, treating every interaction as if it&amp;rsquo;s the first time they&amp;rsquo;ve spoken with a user. They lack the ability to remember previous conversations, preferences, or important facts.&lt;/p&gt;</description></item><item><title>Semantic Search with Spring Boot &amp; Redis</title><link>https://foojayio.github.io/website/today/semantic-search-with-spring-boot-redis/</link><pubDate>Mon, 05 May 2025 15:35:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/semantic-search-with-spring-boot-redis/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;strong&gt;You&amp;rsquo;re building a semantic search app using Spring Boot and Redis. Instead of matching exact words, semantic search finds meaning using Vector Similarity Search (VSS). It works by turning movie synopses into vectors with embedding models, storing them in Redis (as a vector database), and finding the closest matches to user queries.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/o3XN4dImESE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;A traditional searching system works by matching the words a user types with the words stored in a database or document collection. It usually looks for exact or partial matches without understanding the meaning behind the words.&lt;/p&gt;</description></item><item><title>Redis is now available under the AGPLv3 open source license</title><link>https://foojayio.github.io/website/today/redis-is-now-available-under-the-agplv3-open-source-license/</link><pubDate>Fri, 02 May 2025 12:15:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/redis-is-now-available-under-the-agplv3-open-source-license/</guid><description>&lt;p&gt;&lt;strong&gt;The rise of hyperscalers like AWS and GCP has unlocked incredible speed and scale for startups and enterprises alike. But for companies rooted in open source, it has posed a fundamental challenge: how do you keep innovating and investing in OSS projects when cloud providers reap the profits and control the infrastructure without proportional contributions back to the projects that they exploit?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To counter this, companies like MongoDB and Elastic adopted SSPL to protect their business from cloud providers extracting value without reinvesting. Redis initially took a different approach, creating Redis Stack as a separate distribution with a different license for advanced features. While this safeguarded innovation, it also split the developer experience and slowed progress on core Redis. What we really needed was a way to enhance Redis at its core without maintaining two separate tracks&amp;mdash;Redis Community Edition and Redis Stack.&lt;/p&gt;</description></item><item><title>Sliding Window Counter Rate Limiter (Redis &amp; Java)</title><link>https://foojayio.github.io/website/today/sliding-window-counter-rate-limiter-redis-java/</link><pubDate>Tue, 25 Feb 2025 21:21:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/sliding-window-counter-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;This content is also available on YouTube. &lt;a href="https://youtu.be/Wvm_u0IR69M" target="_blank" rel="noopener noreferrer"&gt;Check it out!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Sliding Window Counter offers a more efficient way to handle rate limiting compared to the Sliding Window Log. While the Sliding Window Log keeps an exact log of timestamps for each request, allowing precise tracking over a rolling time period, this precision comes at the cost of higher memory usage and computational overhead as the number of requests increases.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Sliding Window Log Rate Limiter (Redis &amp; Java)</title><link>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</link><pubDate>Tue, 04 Feb 2025 12:21:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/sliding-window-log-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/bCYzRg0oQjY" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube. Check it out!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Sliding Window Log is a &lt;em&gt;more precise&lt;/em&gt; way to handle rate limiting. Instead of splitting time into fixed intervals like the &lt;a href="https://foojayio.github.io/website/wp-admin/post.php?post=115337"&gt;Fixed Window Counter&lt;/a&gt;
 , it keeps a log of timestamps for each request. This allows it to track requests over a rolling time period, like the last second or minute, without abrupt resets at the end of an interval.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Token Bucket Rate Limiter (Redis &amp; Java) - Raphael De Lio</title><link>https://foojayio.github.io/website/today/token-bucket-rate-limiter-redis-java/</link><pubDate>Tue, 28 Jan 2025 07:07:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/token-bucket-rate-limiter-redis-java/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/cfF6nXIpDwE" target="_blank" rel="noopener noreferrer"&gt;This article is also available on YouTube!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;strong&gt;Token Bucket&lt;/strong&gt; algorithm is a flexible and efficient rate-limiting mechanism.&lt;/p&gt;
&lt;p&gt;It works by filling a bucket with tokens at a fixed rate (e.g., one token per second).&lt;/p&gt;
&lt;p&gt;Each request consumes a token, and if no tokens are available, the request is rejected.&lt;/p&gt;
&lt;p&gt;The bucket has a maximum capacity, so it can handle bursts of traffic as long as the burst doesn&amp;rsquo;t exceed the number of tokens in the bucket.&lt;/p&gt;</description></item></channel></rss>