Configure Global Object Expiration
If you utilize global expiry, you will not be able to downgrade Riak KV. Please keep this in mind before choosing to enable global expiry.
By default, LevelDB keeps all of your data. But Riak KV allows you to configure global object expiration (expiry
) or time to live (TTL) for your data.
Expiration is disabled by default, but enabling it lets you expire older objects to reclaim the space used or purge data with a limited time value.
Enabling Expiry
To enable global object expiry, add the leveldb.expiration
setting to your riak.conf file:
leveldb.expiration = on
Turning on global object expiration will not retroactively expire previous data. Only data created while expiration is on will be scheduled for expiration.
Setting Retention Time
The retention_time
setting is used to specify the time until objects expire.
Durations are set using a combination of an integer and a shortcut for the supported units:
- Milliseconds -
ms
- Seconds -
s
- Minutes -
m
- Hours -
h
- Days -
d
- Weeks -
w
- Fortnight -
f
The following example configures objects to expire after 5 hours:
leveldb.expiration = on
leveldb.expiration.retention_time = 5h
You can also combine durations. For example, let’s say you wanted objects to expire after 8 days and 9 hours:
leveldb.expiration = on
leveldb.expiration.retention_time = 8d9h
Expiry Modes
Global expiration supports two modes:
whole_file
- the whole sorted string table (.sst
) file is deleted when all of its objects are expired.normal
- individual objects are removed as part of the usual compaction process.
We recommend using whole_file
with time series data that has a similar lifespan, as it will be much more efficient.
The following example configure objects to expire after 1 day:
leveldb.expiration = on
leveldb.expiration.retention_time = 1d
leveldb.expiration.mode = whole_file
Disable Expiry
To disable global object expiration, set leveldb.expiration
to off
in your riak.conf file. If expiration is disabled, the other 2 settings are ignored. For example:
leveldb.expiration = off
leveldb.expiration.retention_time = 1d
leveldb.expiration.mode = whole_file