Question: How long does Redis store data?

Answer

Redis is an in-memory data storage system that provides high-performance caching and data persistence capabilities. The duration for which Redis stores data depends on various factors and configuration settings.

  1. Volatile Data: Redis allows you to set an expiration time Time To Live(TTL) for individual keys. Once the TTL expires, Redis automatically removes the key and associated data from memory. This feature is commonly used for caching purposes, where data is expected to be valid for a certain duration. Once the TTL is reached, Redis evicts the data from memory, and subsequent requests for that data will result in a cache miss.

  2. Persistent Data: Redis also supports data persistence to disk, which allows you to store data beyond the lifespan set by TTL. There are two main persistence options in Redis:

  • RDB (Redis Database): Redis can periodically save a snapshot of the in-memory dataset to disk in the form of an RDB file. You can configure the frequency of the snapshots. When Redis restarts, it can reload the last saved snapshot, thus persisting the data.
  • AOF (Append-Only File): Redis can also append every write operation to an append-only file. This file contains a log of all the write operations executed on the dataset. By replaying the log, Redis can reconstruct the dataset from scratch, thus providing durability. You can configure the frequency of fsync calls to ensure data durability.

Here's an example of configuring both RDB and AOF persistence in Redis (in the redis.conf file):

# enable RDB persistence save 900 1 # save after 900 seconds if 1 or more keys changed save 300 10 # save after 300 seconds if 10 or more keys changed save 60 10000 # save after 60 seconds if 10000 or more keys changed # enable AOF persistence appendonly yes # enable the AOF log appendfilename "appendonly.aof" # filename for the AOF log appendfsync everysec # sync the AOF log to disk every second

With proper configuration, Redis can store data for an extended period. However, it's important to note that Redis is primarily an in-memory database, and the amount of data you can store is limited by the available memory. If the dataset size exceeds the memory capacity, Redis may evict less frequently accessed or expired keys to make room for new data.

It's also worth mentioning that the persistence mechanisms (RDB and AOF) can introduce disk I/O overhead, potentially impacting the performance of Redis. Therefore, the duration for which Redis stores data is a trade-off between memory capacity, desired TTLs, and the need for persistence.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.