The biggest difference is the “typical usage” for each.
Redis is typically used as a high-speed in-memory cache for applications, whereas Riak is typically used as a scalable highly available persistent data store / database.
Each has their strengths, and weaknesses, but it is similar to comparing apples and oranges.
Redis focuses on speed, inherent data structures, and does offer capabilities to cluster instances as master/slave and shard data, but with extra configuration.
Riak focuses on easy scalability, data safety, and hides the sharding / consistency models from most developers, but at the cost of higher latency since it writes to disk instead of to memory, and handles shards/replicas internally.
In the end it depends on what your engineering needs are.
Adron Hall has a good in-depth writeup here.
From StackOverflow