1. External allocator now allocates blocks that are multiples of 8KB and are aligned to 8KB.
This allows to use it with O_DIRECT files. 4KB was enough but since we can group small strings within
a single block anyway, we can increase minimal block sizes.
2. Fix constants dependencies within external allocator. Improve code structure.
3. Limit string offloading to string sizes below 2MB. Currently we do not support external allocations of larger sizes.
1. Add ExternalAllocator that provides files ranges to write to.
2. Add IoMgr that wraps files and allows sending asynchronous requests.
3. Add POC that writes string values when a new entry is added.
The original values kept are still kept in memory.
1. Added support of loading of compressed strings.
2. Verified we load expiry info.
3. Extended supported expiry period to 4 years (previously I set 1 year).
1. Basic support of sets and hsets. No intset or dict-based hset yet.
2. Make sure that rdbloader actually loads the data into shards.
3. Support object metadata like expiry time.
4. Support lists loading.
1. Sets do not use anymore redis encoding constants in our codebase.
2. rdb_save serializes now expiry information as well.
3. db_slice provides a simplified api to translate from absolute time to ExpirePeriod.
4. common_types.h is renamed to common.h. cached memory usage variables are moved there.
1. Fix#12 - return number of added items for non-increment usecase.
2. Fix#15 - fix double precision response. I use a different printing algorithm that of Redis
therefore there could be string differences between 2 systems. However, both replies should
be equivalent numerically.
3. Fix#13. Reject ZADD with LT and GT options together.
4. Fix#11 - return correct error when parsing invalid scores.
1. Fix crash when calling BLPOP on the same key several times.
2. Extend RENAME functionality to cover all data-types.
Before that it worked only for strings and that also was incorrect.