I've had an alternative Redis-like design for a while... What if you have a Python process that keeps the data in dicts and lists and Python objects as usual. These data structures get persisted to disk by forking and pickling the data as a snapshot, while the main process continues to serve requests. For a small server, the Python process can be the single-threaded web server itself (e.g. using Tornado web server).
Your performance will be absolutely horrible compared to Redis. I can't see doing this for anything production-worthy. (Miniredis was made for a very specific use-case where the performance hit was fine--and even there, we've replaced it with the real Redis for the next version.)
I didn't exactly mean a Redis server implemented in Python instead of C... It could be that, but speaking application-specific DSL instead of generic data structure DSL.
Yes you can do this with most scripting languages. This is why I consider Redis more a DSL, proof is, it is trivial to write a Redis-complete script using a real scripting language.
However the problem with this approach is that you get a lot less performances and memory efficiency.
If you don't have a network interface, is not the same thing as Redis. Even Redis can be written as a C library, but it's not the same. Redis is all about a shared persistent state.
I've no idea about __slots__, just a feeling that there are too much underscores to work well ;) But in general to get as memory efficient as Redis in a scripting language is very hard for different (good) reasons.