-
Notifications
You must be signed in to change notification settings - Fork 324
RS: new Flex docs #2871
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
RS: new Flex docs #2871
Changes from all commits
2a95478
f029f92
c23b6f1
d244b0d
b66c654
0a9fc1e
6524936
eeee481
1c6757f
caf2bb4
87b3b0d
c92bca8
efa2146
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,93 @@ | ||
| --- | ||
| Title: Flex databases | ||
| alwaysopen: false | ||
| categories: | ||
| - docs | ||
| - operate | ||
| - rs | ||
| - rc | ||
| description: Extend Redis databases with flash storage for large-scale, cost-efficient deployments. | ||
| hideListLinks: true | ||
| linktitle: Flex databases | ||
| weight: 38 | ||
| --- | ||
|
|
||
| Flex extends your database capacity by combining RAM and flash (SSD) storage. This tiered architecture keeps frequently accessed (hot) data in RAM for sub-millisecond latency while storing less active (warm) data on flash to reduce costs and increase capacity. Flex frees RAM for hot data, leads to a higher RAM hit rate, and allows bigger datasets per node. | ||
|
|
||
| Flex databases work with your existing Redis applications and the Redis API without modification. | ||
|
|
||
| ## How Flex works | ||
|
|
||
| ### Automatic data tiering | ||
|
|
||
| Flex moves data between RAM and flash based on access patterns: | ||
|
|
||
| - Frequently accessed data stays in high-speed RAM. | ||
| - Less active data moves to cost-efficient flash storage. | ||
| - Data accessed from flash promotes back to RAM automatically. | ||
|
|
||
| Redis uses an [LRU (least recently used)]({{< relref "/develop/reference/eviction#apx-lru" >}}) eviction policy to manage data placement. When memory pressure increases, Flex identifies cold objects, transfers them to flash, and frees RAM for new or frequently accessed keys. | ||
|
|
||
| This process requires no application changes. Your existing Redis commands work across both storage tiers. | ||
|
|
||
| ### Storage engine | ||
|
|
||
| Flex uses [Speedb](https://docs.speedb.io), a high-performance key-value storage engine optimized for flash drives: | ||
|
|
||
| - Redis handles all data operations in memory. | ||
| - Speedb manages the flash storage layer. | ||
|
|
||
| This design delivers predictable latency and throughput as datasets grow beyond RAM limits. | ||
|
|
||
| ## Compatibility | ||
|
|
||
| Flex is compatible with the Redis API and supports all Redis data types, including JSON and probabilistic data structures (Bloom filters, Count-Min Sketch, Top-K). | ||
|
|
||
| The following features are not yet supported with Flex: | ||
|
|
||
| - Redis Search | ||
| - Time series | ||
| - Active-Active | ||
|
|
||
| ## When to use Flex | ||
|
|
||
| Use Flex when you need to: | ||
|
|
||
| - Run Redis at terabyte scale while maintaining high throughput and sub-10 ms latency | ||
| - Power real-time feature stores for machine learning applications | ||
| - Operate large distributed caches with elastic scaling and consistent performance under heavy load | ||
| - Reduce infrastructure costs by combining high-speed RAM with cost-efficient flash storage | ||
|
|
||
| {{<note>}} | ||
| Flex does not replace long-term data persistence. For workloads that require durability and recovery across restarts or failures, use Redis persistence features like [AOF (Append-Only File)]({{< relref "/operate/oss_and_stack/management/persistence#append-only-file" >}}), [RDB snapshots]({{< relref "/operate/oss_and_stack/management/persistence#snapshotting" >}}), or both. For more information, see [Database persistence]({{< relref "/operate/rs/databases/configure/database-persistence" >}}). | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I suggest adding a dedicated "What Flex isn't" section with the wording similar to the doc: https://docs.google.com/document/d/1PuFejCooJpy_gs0MoM5Pf9MLS46x6gcNUmzYfPjIHik/edit?disco=AAABz_t08H0&tab=t.0
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This info is already included in a note in https://redis.io/docs/staging/DOC-6284/operate/rs/flex/#when-to-use-flex:
|
||
| {{</note>}} | ||
|
|
||
| ## Flex and Auto Tiering | ||
|
|
||
| Flex replaces [Auto Tiering]({{< relref "/operate/rs/7.22/databases/auto-tiering" >}}) (formerly known as Redis on Flash). Redis Software selects the implementation based on your Redis version: | ||
|
|
||
| | Redis database version | Flex | Auto Tiering | | ||
| |------------------------|------|--------------| | ||
| | 8.0 and later | <span title="Supported">✅</span> | <span title="Not supported">❌</span> | | ||
| | 7.4 | <span title="Supported">✅</span> | <span title="Supported">✅</span>| | ||
| | 7.2 and earlier | <span title="Not supported">❌</span> | <span title="Supported">✅</span> | | ||
|
|
||
| For Redis Software version 7.22.2-22 or earlier, see [Auto Tiering]({{< relref "/operate/rs/7.22/databases/auto-tiering" >}}). | ||
|
|
||
| ### Differences between Flex and Auto Tiering | ||
|
|
||
| - Key and value offloading | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a short explanation on why it matters:
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added |
||
| - Auto Tiering offloads only values to flash while keys remain in RAM. | ||
| - Flex offloads both keys and values, which increases dataset density per node and reduces RAM consumption. This change frees RAM for hot data, leads to a higher RAM hit rate, and allows bigger datasets per node. | ||
| - RAM population strategy | ||
| - Auto Tiering fills all available RAM before offloading data to flash. This maximizes hot-data performance but can cause non-linear performance changes at high utilization. | ||
| - Flex uses utilization-aware RAM population. When database utilization is below 50%, Flex uses up to 50% of configured RAM for hot data. Above 50% utilization, Flex uses both RAM and flash proportionally, following the configured RAM-to-flash ratio. This provides a stable performance curve, consistent RAM hit-rate, and predictable throughput and latency. | ||
| - Storage engine | ||
| - Auto Tiering uses either RocksDB or Speedb as the storage engine. | ||
| - Flex uses Speedb only. | ||
|
|
||
| ## Next steps | ||
|
|
||
| - [Plan your deployment]({{< relref "/operate/rs/flex/plan" >}}): Review hardware requirements, sizing guidelines, and limitations. | ||
| - [Get started]({{< relref "/operate/rs/flex/get-started" >}}): Configure Flex on your cluster. | ||
| - [Scale your deployment]({{< relref "/operate/rs/flex/scale" >}}): Learn scaling strategies and best practices. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Flex frees RAM for hot data, higher RAM hit‑rate, bigger datasets per node”
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added