Just finished publishing this : https://github.com/mtourne/ngx.cache_table
It's a simple Lua table that can be saved to a lua_shared_dict automatically using msgpack serialization.
All the magic to make it work is hidden in a metatable, so it can be used like any standard Lua table.
Currently this is backed by ngx.shared.DICT and cmsgpack.
But it's possible to imagine a future ngx.worker.cache (per-worker cache), which would be faster than shared memory, and multiple layers of cache built in cache_table while keeping the same API.
Let me know if you have any comments.