Are you looking to proxy Redis Cluster, or a proxy which provides a "cluster of Redis servers"? The distinction is important. Codis, for example does not run Redis Cluster, it is a clustering proxy. I wrote an analysis of it a couple years or so ago at
http://www.iamtherealbill.com/2015/04/clusterizing-redis-codis/ which really went into it at the time. Codis requires specifically modified Redis source, so arguably isn't really a true Redis proxy. It also makes some specific choices such as "no automated promoting of slaves when a master fails", which for some people does not meet "cluster" criteria; YMMV.
XCodis is a port of Codis that doesn't rely on modified Redis sources, but consequently lacks some of Codis' more significant features. It also hasn't been touched in a couple years.
For straight TCP pretty much any TCP level proxy, including Nginx and HAProxy, can work, it is primarily a matter of configuration - so long as you aren't talking about Redis Cluster, but a "cluster" of Redis nodes. Dynomite falls under the "collection of Redis nodes" category as well.
Corvus is new w/in the last year so I've not had time to analyze it. Perhaps I can add doing that to my queue for the next few weeks if there is interest. However, I note they only benchmarked get, set, and mset. These are not really what you want to see in a Redis benchmark as it doesn't really measure the capacity of a given install (for starters, in Redis something like 85% of the time in a get call is in the Linux kernel). I see it also claims to handle cluster management and this brings me to another factor: how reliable is the management? While Twemproxy and TCP process require you either write your own or use Sentinel, when they are inbuilt you really need to consider how, and how well, they handle node failure. For example, for Corvus their benchmarking is suspect to me, and is missing the failure condition.
For example they list their config as 1 corvus server in front of 3 machines, each with 60 instances of Redis, half of each are masters. How the slaves are distributed is not made clear and depending on the test (especially w/Redis benchmark), wholly misleading. Further, the most critical aspect of such an arrangement is what happens when one of those three nodes dies. You now have 30 promotions to make.What would the effect on Corvus performance of a simultaneous failure of 30 masters? I am not picking on Corvus here, merely pointing out the bits conspicuously absent. Indeed, if as I understand it, Corvus lets Redis in Cluster mode handle the promotion and regarding, then it has an easier time for this. But it will still have an impact on that lone Corvus server. Any time I see "benchmark" configurations like that I get leery of the results. Reduce the suite of test to three of the most basic commands, and suspicion breeds. Fundamentally, a Redis Cluster proxy is essentially a connection relay state machine, so the overhead should be pretty lightweight if done right.
Really the primary factor is in determining what your specific functional requirements are. For example if you need to perform operations that don't work in a given proxy/cluster solution that rules out certain options. If all of our data fits in memory and writes don't exceed a single host, perhaps Cluster is overkill and a Redis pod w/Sentinel+TCP proxy is the best solution. Conversely, if you know you will have very high writes and/or more data than fits in memory, that eliminates other types of solutions. Personally, I'd nail down that level of requirement before comparing proxies and "Clustering Redis projects". The time saved in testing solutions that wouldn't meet the requirements can be used for more thorough vetting of ones that do.
Cheers,
Bill