Redis is an in-memory data store that can persist data to disk. The persistence options in Redis are:
RDB (Redis Database File): This option saves a snapshot of the dataset at specified intervals. By default, a snapshot is taken every 900 seconds (15 minutes) if at least one key has changed, and at least 5 minutes have elapsed since the last snapshot. You can configure this behavior by modifying the
save directive in the Redis configuration file. Redis uses a background process to save the snapshot to disk, which means that there is no blocking when the snapshot is taken.
AOF (Append-Only File): This option logs all write operations to a file, which can be played back to reconstruct the dataset. The AOF file can be configured to sync after every write operation, or after a specified number of write operations or bytes. AOF is slower than RDB but provides better durability guarantees.
In general, Redis stores data indefinitely as long as it is not explicitly deleted or evicted due to memory constraints. However, the amount of time that data is persisted to disk depends on the persistence option(s) you have configured. If neither RDB nor AOF persistence is enabled, then Redis will only hold data in memory until it runs out of space, at which point it will start evicting keys based on the eviction policy you have configured.
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
Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.