<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sgs246</title>
    <description>The latest articles on DEV Community by sgs246 (@sgs97).</description>
    <link>https://dev.to/sgs97</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3933978%2Fc6c18cbe-b34b-45d6-be62-e20924900d00.png</url>
      <title>DEV Community: sgs246</title>
      <link>https://dev.to/sgs97</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sgs97"/>
    <language>en</language>
    <item>
      <title>Redis just became your feature flag system. Yes, really! 🚀</title>
      <dc:creator>sgs246</dc:creator>
      <pubDate>Mon, 18 May 2026 12:00:00 +0000</pubDate>
      <link>https://dev.to/sgs97/redis-just-became-your-feature-flag-system-yes-really-45g8</link>
      <guid>https://dev.to/sgs97/redis-just-became-your-feature-flag-system-yes-really-45g8</guid>
      <description>&lt;p&gt;Every time I looked at feature flag SaaS pricing, I had the same thought: I already run Redis. Why am I paying $500/month for a server I don't need?&lt;/p&gt;

&lt;p&gt;Feature flags are not complicated. A flag is enabled or disabled. A user gets it or they don't. That's it.&lt;/p&gt;

&lt;p&gt;So I built redis-feature-flags — a feature flag library backed by Redis you already run.&lt;/p&gt;

&lt;p&gt;💰 No new server — cut your infrastructure costs&lt;br&gt;
🔒 No data leaving your infrastructure — ever&lt;br&gt;
📦 No monthly bill — completely free&lt;/p&gt;

&lt;p&gt;If you're already running Redis, you're 60 seconds away from production-ready feature flags.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is redis-feature-flags?
&lt;/h2&gt;

&lt;p&gt;A Python and Java SDK that turns your existing Redis instance into a feature flag system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gradual rollout — release to 10% of users, then 50%, then 100%&lt;/li&gt;
&lt;li&gt;User targeting — give specific users early access&lt;/li&gt;
&lt;li&gt;Cohort targeting — target entire groups (beta testers, enterprise users)&lt;/li&gt;
&lt;li&gt;Kill switch — disable any feature instantly, no redeploy needed&lt;/li&gt;
&lt;li&gt;Flag expiry — auto-expire flags at a timestamp, no cleanup needed&lt;/li&gt;
&lt;li&gt;Multiple environments — prod, staging, dev on one Redis instance&lt;/li&gt;
&lt;li&gt;CLI included — manage flags from your terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Who is this for?
&lt;/h2&gt;

&lt;p&gt;redis-feature-flags is ideal for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Startups and small teams who already run Redis and want to avoid adding new infrastructure&lt;/li&gt;
&lt;li&gt;Teams that are cost-conscious and want to eliminate SaaS subscriptions&lt;/li&gt;
&lt;li&gt;Developers who want full control over their data — no third party ever sees your flag evaluations&lt;/li&gt;
&lt;li&gt;Teams that value simplicity — no new service to deploy, monitor, or on-call for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you already have Redis in your stack, this is a zero-overhead addition.&lt;/p&gt;
&lt;h2&gt;
  
  
  Get started in 60 seconds
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;redis-feature-flags
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;redis&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;redis_feature_flags&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FeatureFlags&lt;/span&gt;

&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;redis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;flags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FeatureFlags&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prod&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dark_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rollout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dark_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;is_enabled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dark_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# → True or False
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. No API keys. No account. No configuration files. Just Redis.&lt;/p&gt;
&lt;h2&gt;
  
  
  Works when Redis is down
&lt;/h2&gt;

&lt;p&gt;The SDK has a three-tier cache design:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warm cache&lt;/strong&gt; — flag data served from in-process memory. No Redis call. Sub-millisecond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cold cache&lt;/strong&gt; — flag data fetched fresh from Redis. Still fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stale cache&lt;/strong&gt; — if Redis goes down, the last known flag state keeps serving. Your application never crashes because Redis is temporarily unavailable.&lt;/p&gt;

&lt;p&gt;Redis up   → warm cache or fetch fresh from Redis&lt;br&gt;
Redis down → serve stale cache (last known state)&lt;br&gt;
Redis down + nothing cached → return default value&lt;/p&gt;

&lt;p&gt;🔒 Your flag data never leaves your infrastructure. Ever.&lt;/p&gt;
&lt;h2&gt;
  
  
  Well tested
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python SDK — 94 tests, 100% coverage&lt;/li&gt;
&lt;li&gt;Python CLI — 68 tests, 95.83% coverage&lt;/li&gt;
&lt;li&gt;Java SDK — 109 tests passing&lt;/li&gt;
&lt;li&gt;E2e tests against real Redis — not mocks&lt;/li&gt;
&lt;li&gt;Benchmarked — warm cache evaluation under 0.1ms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CI runs on every commit across Python 3.9, 3.10, 3.11, 3.12, 3.13 and Java 17.&lt;/p&gt;
&lt;h2&gt;
  
  
  Manage flags from your terminal
&lt;/h2&gt;

&lt;p&gt;The CLI works with any language SDK. Create a flag with the CLI, evaluate it in Python or Java.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;redis-flags

redis-flags use prod
redis-flags create dark_mode &lt;span class="nt"&gt;--rollout&lt;/span&gt; 10
redis-flags &lt;span class="nb"&gt;enable &lt;/span&gt;dark_mode
redis-flags list
redis-flags inspect dark_mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI auto-detects your OS username for audit trail. Every change is tracked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;⭐ GitHub: &lt;a href="https://github.com/sgs-97/redis-feature-flags" rel="noopener noreferrer"&gt;https://github.com/sgs-97/redis-feature-flags&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 Python SDK: &lt;a href="https://pypi.org/project/redis-feature-flags" rel="noopener noreferrer"&gt;https://pypi.org/project/redis-feature-flags&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🖥️ CLI: &lt;a href="https://pypi.org/project/redis-flags" rel="noopener noreferrer"&gt;https://pypi.org/project/redis-flags&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;☕ Java SDK: &lt;a href="https://central.sonatype.com/artifact/io.github.sgs-97/redis-feature-flags" rel="noopener noreferrer"&gt;https://central.sonatype.com/artifact/io.github.sgs-97/redis-feature-flags&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📖 Documentation: &lt;a href="https://github.com/sgs-97/redis-feature-flags/blob/master/docs.md" rel="noopener noreferrer"&gt;https://github.com/sgs-97/redis-feature-flags/blob/master/docs.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📋 README: &lt;a href="https://github.com/sgs-97/redis-feature-flags/blob/master/README.md" rel="noopener noreferrer"&gt;https://github.com/sgs-97/redis-feature-flags/blob/master/README.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Contributions welcome. Especially TypeScript and Go SDKs.&lt;/p&gt;

</description>
      <category>redis</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>featureflags</category>
    </item>
  </channel>
</rss>
