Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 39 additions & 28 deletions content/operate/rs/databases/flash/_index.md
Original file line number Diff line number Diff line change
@@ -1,66 +1,71 @@
---
Title: Redis Flex and Auto Tiering
Title: Flex and Auto Tiering
alwaysopen: false
categories:
- docs
- operate
- rs
- rc
description: Redis Flex and Auto Tiering enable your data to span both RAM and dedicated flash memory.
description: Flex and Auto Tiering enable your data to span both RAM and dedicated flash memory.
hideListLinks: true
linktitle: Redis Flex and Auto Tiering
linktitle: Flex and Auto Tiering
weight: 50
aliases: /operate/rs/databases/auto-tiering/
---
Redis Flex and Auto Tiering in Redis Software enable databases to use solid state drives (SSDs) to extend beyond DRAM capacity.

{{<banner-article>}}
This article includes a general overview of Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{<relref "/operate/rs/flex">}}) section instead.
{{</banner-article>}}

[Flex]({{<relref "/operate/rs/flex">}}) and Auto Tiering in Redis Software enable databases to use solid state drives (SSDs) to extend beyond DRAM capacity.
Developers can build applications that require large datasets using the same Redis API.
Using SSDs can significantly reduce the infrastructure costs compared to only DRAM deployments.

Frequently used data, called hot data, belongs in the fastest memory level to deliver a real-time user experience.
Data that is accessed less frequently, called warm data, can be kept in a slightly slower memory tier.
Redis Flex maintains hot data in DRAM, keeps warm data in SSDs, and transfers data between tiers automatically.
Flex maintains hot data in DRAM, keeps warm data in SSDs, and transfers data between tiers automatically.

Redis Flex is based on a high-performance storage engine (Speedb) that manages the complexity of using SSDs and DRAM as the total available memory for databases in a Redis Software cluster. This implementation offers a performance boost of up to 10k operations per second per core of the database, doubling the performance of Redis on Flash.
Flex is based on a high-performance storage engine (Speedb) that manages the complexity of using SSDs and DRAM as the total available memory for databases in a Redis Software cluster. This implementation offers a performance boost of up to 10k operations per second per core of the database, doubling the performance of Redis on Flash.

Just like all-RAM databases, Redis Flex databases are compatible with existing Redis applications.
Just like all-RAM databases, Flex databases are compatible with existing Redis applications.

Redis Flex is also supported on [Redis Cloud]({{< relref "/operate/rc/" >}}) and [Redis Enterprise Software for Kubernetes]({{< relref "/operate/rs/" >}}).
Flex is also supported on [Redis Cloud]({{< relref "/operate/rc/" >}}) and [Redis Enterprise Software for Kubernetes]({{< relref "/operate/rs/" >}}).

## Redis Flex versus Auto Tiering
## Flex versus Auto Tiering

Redis Flex is the enhanced successor to Auto Tiering, generally available as of Redis Software version 8.0.2.
Flex is the enhanced successor to Auto Tiering, generally available as of Redis Software version 8.0.2.

Redis database versions support Redis Flex and Auto Tiering as follows:
Redis database versions support Flex and Auto Tiering as follows:

| Redis database version | Redis Flex | Auto Tiering |
| Redis database version | Flex | Auto Tiering |
|------------------------|------------|--------------|
| 8.0 and later | <span title="Supported">&#x2705;</span> | <span title="Not supported">&#x274c;</span> |
| 7.4 | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span>|
| 7.2 and earlier | <span title="Not supported">&#x274c;</span> | <span title="Supported">&#x2705;</span> |

Redis Flex requires the Speedb driver, while Auto Tiering can use either RocksDB or Speedb. See [Manage Auto Tiering storage engine]({{<relref "/operate/rs/databases/flash/storage-engine">}}) for more information.
Flex requires the Speedb driver, while Auto Tiering can use either RocksDB or Speedb. See [Manage Auto Tiering storage engine]({{<relref "/operate/rs/databases/flash/storage-engine">}}) for more information.

## Use cases

The benefits associated with Redis Flex are dependent on the use case.
The benefits associated with Flex are dependent on the use case.

Redis Flex is ideal when your:
Flex is ideal when your:

- working set is significantly smaller than your dataset (high RAM hit rate)
- average key size is smaller than average value size
- most recent data is the most frequently used (high RAM hit rate)

Redis Flex is not recommended for:
Flex is not recommended for:

- Broad access patterns (any value could be pulled into RAM)
- Large working sets (working set is stored in RAM)
- Frequently moved data (moving to and from RAM too often can impact performance)

Redis Flex is not intended to be used for persistent storage. Redis Software database persistent and ephemeral storage should be on different disks, either local or attached.
Flex is not intended to be used for persistent storage. Redis Software database persistent and ephemeral storage should be on different disks, either local or attached.

## Where is my data?

When using Redis Flex, RAM storage holds:
When using Flex, RAM storage holds:
- Key indexes
- Dictionaries
- Hot data (working set), including frequently accessed keys and values
Expand All @@ -69,7 +74,7 @@ All data is accessed through RAM. If a key or value in flash memory is accessed,

Inactive or infrequently accessed data is referred to as "warm data" and stored in flash memory. When more space is needed in RAM, warm keys and values are moved from RAM to flash storage.

{{<note>}} When using Auto Tiering with Redis Search, indexes are also stored in RAM. Redis Flex does not support Redis Search.{{</note>}}
{{<note>}} When using Auto Tiering with Redis Search, indexes are also stored in RAM. Flex does not support Redis Search.{{</note>}}

## RAM to Flash ratio

Expand All @@ -80,19 +85,19 @@ The RAM limit cannot be smaller than 10% of the total memory. We recommend you k

## Flash memory

Implementing Redis Flex requires pre planning around memory and sizing. Considerations and requirements for Redis Flex include:
Implementing Flex requires pre planning around memory and sizing. Considerations and requirements for Flex include:

- Flash memory must be locally attached. Using network-attached storage (NAS), storage area networks (SAN), or solutions such as AWS Elastic Block Storage (EBS) is not supported.
- Flash memory must be dedicated to Redis Flex and not shared with other parts of the database, such as durability, binaries, or persistence.
- Flash memory must be dedicated to Flex and not shared with other parts of the database, such as durability, binaries, or persistence.
- For the best performance, the SSDs should be NVMe based, but SATA can also be used.
- The available flash space must be greater than or equal to the total database size (RAM+Flash). The extra space accounts for write buffers and [write amplification](https://en.wikipedia.org/wiki/Write_amplification).

{{<note>}} The Redis Software database persistent and ephemeral storage should be on different disks, either local or attached. {{</note>}}

After these requirements are met, you can create and manage both Redis Flex databases and
After these requirements are met, you can create and manage both Flex databases and
all-RAM databases in the same cluster.

When you begin planning the deployment of a Redis Flex database in production,
When you begin planning the deployment of a Flex database in production,
we recommend working closely with the Redis technical team for sizing and performance tuning.

### Cloud environments
Expand All @@ -107,7 +112,7 @@ We specifically recommend "[Storage Optimized I4i - High I/O Instances](https://

### On-premises environments

When you begin planning the deployment of Redis Flex in production, we recommend working closely with the Redis technical team for sizing and performance tuning.
When you begin planning the deployment of Flex in production, we recommend working closely with the Redis technical team for sizing and performance tuning.

On-premises environments support more deployment options than other environments.

Expand All @@ -122,11 +127,11 @@ The following table shows which data types and features are supported for Flex a
| Standard [Redis data types]({{<relref "/develop/data-types">}}) | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| [Time series]({{<relref "/develop/data-types/timeseries">}}) | <span title="Not supported">&#x274c;</span> | <span title="Supported">&#x2705;</span> |

{{<warning>}} Redis Flex is not supported running on network attached storage (NAS), storage area network (SAN), or with local HDD drives. {{</warning>}}
{{<warning>}}Flex is not supported running on network attached storage (NAS), storage area network (SAN), or with local HDD drives. {{</warning>}}

## Size limits for keys and values

Redis Flex databases cannot store keys or values larger than 4GB in flash storage.
Flex databases cannot store keys or values larger than 4GB in flash storage.

Keys or values larger than 4GB will be stored in RAM only, and warnings will appear in the Redis logs similar to:

Expand All @@ -136,8 +141,14 @@ Keys or values larger than 4GB will be stored in RAM only, and warnings will app

## Next steps

- [Redis Flex metrics]({{< relref "/operate/rs/references/metrics/auto-tiering" >}})
- [Redis Flex quick start]({{< relref "/operate/rs/databases/flash/quickstart" >}})
- [Get started with Flex databases for Redis Software]({{< relref "/operate/rs/flex/get-started" >}})

- [Auto Tiering quick start]({{< relref "/operate/rs/databases/flash/quickstart" >}})

- [Ephemeral and persistent storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}})

- [Plan a Flex deployment for Redis Software]({{<relref "/operate/rs/flex/plan">}})

- [Hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}})

- [Flex and Auto Tiering metrics]({{< relref "/operate/rs/references/metrics/auto-tiering" >}})
23 changes: 14 additions & 9 deletions content/operate/rs/databases/flash/quickstart.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
---
Title: Redis Flex and Auto Tiering quick start
Title: Flex and Auto Tiering quick start
alwaysopen: false
categories:
- docs
- operate
- rs
description: Get started with Redis Flex and Auto Tiering quickly, creating a cluster and database
description: Get started with Flex and Auto Tiering quickly, creating a cluster and database
using flash storage.
linkTitle: Quick start
weight: 80
aliases: /operate/rs/databases/auto-tiering/quickstart/
---
This page guides you through a quick setup of [Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash" >}}) with a single node for testing and demo purposes.

{{<banner-article>}}
This article includes a quick start for Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{<relref "/operate/rs/flex">}}) section instead.
{{</banner-article>}}

This page guides you through a quick setup of [Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash" >}}) with a single node for testing and demo purposes.

For production environments, you can find more detailed installation instructions in the [install and setup]({{< relref "/operate/rs/installing-upgrading" >}}) section.

The steps to set up a Redis Software cluster using Redis Flex
The steps to set up a Redis Software cluster using Flex
with a single node are:

1. Install Redis Software or run it in a Docker
container.
1. Set up a Redis Software cluster with Redis Flex.
1. Create a new database with Redis Flex enabled.
1. Set up a Redis Software cluster with Flex.
1. Create a new database with Flex enabled.
1. Connect to your new database.

## Install Redis Software
Expand Down Expand Up @@ -71,7 +76,7 @@ To verify the disk configuration, run:
sudo lsblk
```

## Set up a cluster and enable Redis Flex
## Set up a cluster and enable Flex

1. Direct your browser to `https://localhost:8443` on the host machine to
see the Redis Software Cluster Manager UI.
Expand Down Expand Up @@ -112,12 +117,12 @@ On the **Databases** screen:

1. Select **Create**.

You now have a database with Redis Flex enabled!
You now have a database with Flex enabled!

## Connect to your database

After you create the database, you can connect to it and store data. See [Test client connection]({{<relref "/operate/rs/databases/connect/test-client-connectivity">}}) for connection options and examples.

## Next steps

To see the true performance and scale of Redis Flex, you must tune your I/O path and set the flash path to the mounted path of SSD or NVMe flash memory as that is what it is designed to run on. For more information, see [Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}).
To see the true performance and scale of Flex, you must tune your I/O path and set the flash path to the mounted path of SSD or NVMe flash memory as that is what it is designed to run on. For more information, see [Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}).
6 changes: 5 additions & 1 deletion content/operate/rs/databases/flash/storage-engine.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ weight: 100
aliases: /operate/rs/databases/auto-tiering/storage-engine/
---

{{<banner-article>}}
This article includes information about the storage engines used by Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{<relref "/operate/rs/flex">}}) section instead.
{{</banner-article>}}

## Manage the storage engine

Auto Tiering supports two storage engines:
Expand All @@ -19,7 +23,7 @@ Auto Tiering supports two storage engines:

- [RocksDB](https://rocksdb.org/): Used up to Redis version 6.2. Deprecated for later Redis versions.

Redis Flex supports Speedb only.
Flex supports Speedb only.

{{<warning>}}Switching between storage engines requires guidance by Redis Support or your Account Manager.{{</warning>}}

Expand Down
93 changes: 93 additions & 0 deletions content/operate/rs/flex/_index.md
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.

Copy link
Copy Markdown

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”

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

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" >}}).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The 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

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The 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 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), RDB snapshots, or both. For more information, see Database persistence.

{{</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">&#x2705;</span> | <span title="Not supported">&#x274c;</span> |
| 7.4 | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span>|
| 7.2 and earlier | <span title="Not supported">&#x274c;</span> | <span title="Supported">&#x2705;</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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a short explanation on why it matters:
"frees RAM for hot data, higher RAM hit‑rate, bigger datasets per node”

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The 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.
Loading
Loading