70 points
Your task is to grab a Redis snapshot from our API and extract some [meta-]data about the contents.
Every time you send a request to the problem endpoint, you'll get back a new, neatly-crafted Redis snapshot with a few fun things inside:
Data will be spread out over a few databases.
To solve the challenge, extract the expiry timestamp of that one key, extract the value of the emoji key (as in, the value the key is set to, not the actual emoji codepoint) and the number of non-empty databases inside the snapshot. Oh, and we'll ask that you also check the type of one of the keys inside and send that back. You'll get the name of the key in the problem JSON.
Minor inconvenience, though - looks like the header may have been... tampered with by a truly demonic, envious entity. Nothing too serious, though.
GET /challenges/the_redis_one/problem?access_token=...
Problem JSON structure is simple:
rdb
: a base64 encoded Redis snapshotrequirements
:
check_type_of
: this key right here - we want you to check its type for us
POST /challenges/the_redis_one/solve?access_token=...
Your solution should be a JSON with the following keys inside it:
db_count
: how many databases were initialized emoji_key_value
: the value of the emoji keyexpiry_millis
: the timestamp in milliseconds of the only key with an expiry time$check_type_of
: the type of the key named $check_type_of
(replace with the actual name)Remember to replace $check_type_of
with the actual key name! If the problem JSON contained a "check_type_of": "overweight_geese"
, solution JSON should contain "overweight_geese": "hash"
- or whatever the type will be.
I think on-disk storage formats are awesome. Also, I wanted you to get a taste of the "I bet I could write my own Redis, and it could even understand the official dump format" late-night thought. Originally, I was thinking about generating InnoDB
files for you so you see, things could have been way worse to rip apart - but decided to save that for another day. It's coming though, so start warming up and dive into .rdb
.
h^
by buying me a coffee. Cheers!h^
profile is here.