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.
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
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 -
- Seconds -
- Minutes -
- Hours -
- Days -
- Weeks -
- Fortnight -
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
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
To disable global object expiration, set
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