We "cheated" for hashes and used SQL-like create table statements (minus the "create table" bit) with a new "optional" keyword. It gives the hash name, field name and the expected contents. In hindsight, since all hashes map to objects in our code, could probably have used object notation but we created our hashes before our objects and were converting from SQL so it seemed easiest/best.
For lists and sets we kept it simple with entries like:
Sorted Set: videos:sort_filter:release_date {epoch_time} {video_id}
Sorted Set: videos:sort_filter:rating {rating_float} {video_id}
List: job:queue {serialized_job_object}
It is short and obvious in most cases. We haven't started playing with Lua so that simplifies things. When we do, things might need to change.
Eric Pickup
YouPorn Lead Developer
Manwin Canada
Office: +1.514.359.3555
Fax: +1.514.359.3556
Twitter: EricPickupYP