I've no clue about MongoDB performances, and which of Redis and MongoDB is faster incrementing integers, but for sure this benchmark is completely useless, as it is actually measuring a mix of client library latency and round trip time, being it single threaded, making no assumptions about the durability requirements, and so forth.
For sure it seems like that MongoDB client library you are using has a smaller latency, perhaps it is a C library? As Redis-rb is instead written in Ruby itself.
Another huge problem of this benchmark is that it should try to increment a random key per every iteration, out of a dataset with a few millions of keys, as this is realistically what you need. You'll see how Redis with 50 clients will increment this counters 100k times per second or more without any performance degradation as the number of keys grows.
I have to agree with antirez here and call shenanigans. "WOW, MongoDB is almost a full 40% faster at incrementing than Redis" is simply a false statement. The correct conclusion for your post is "WOW, incrementing the same key 100k times with the mongo ruby gem in a very specific, single-threaded ruby application is 40% faster than incrementing one key 100k times with the redis ruby gem the in that same ruby application." If anyone makes a decision about a real world application based on your post, they will be making a huge mistake.
Thanks for agreeing, however I must point out that since your blog post does not accept comments, nor you rectified the content, this is misleading information that will stay on the internet for virtually many years to come.
I'm a programmer, but not very good at statistics (as in I passed the class with flying colors, but I can't really comment on new situations).
When it comes to things like benchmarking, I find it easiest to avoid making absolute conclusions like "X is faster than Y", but to merely present the data, all the data, and nothing but the data.
In this case, I'd have wanted to see the response times per request, and perhaps the memory trend for the client. At the very least, I'd like to know how Mongo and Redis were setup, and if either had begun to swap.
To know the version may be interesting but not really useful, I bet that if you change Redis with a dummy TCP server that is only able to reply +OK, whatever it receives, you'll get the same numbers here.
Basically every kind of networked server with a simple request-response protocol, in a busy loop over loopback, will show performances between 10k and 20k requests per second, mostly up to the speed of the implementation of the client.
In his test, it appears the Mongo driver is just putting the message on the wire, not actually waiting on the server reply or verifying that the command was ever actually processed. Using the Redis in pipelined execution mode would be a much closer test.
Thanks! That's a fine executive summary. The longer version is that original humor is appreciated, particularly if insightful and non-obvious, but regurgitated memes are not welcome here. If you are rushing to make the obvious joke before everyone else does, please don't.
Seriously. I did not know that the use of a meme is violates site ethics guidelines. I checked the comment guidelines (http://ycombinator.com/newsguidelines.html) I didn't see any guideline referring to the use of memes. If using a meme is such an egregious offense as this comment thread suggests, maybe this violation should be mentioned in the guidelines.
Generally the popularity of a comment is a good enough indicator of how well a comment is received. If I got 100 upvotes on that comment I may get the impression that people like that. Considering I have < 0 on the comment, I can take the hint. I don't need the proper patrol reprimanding me about a non-stipulated rule.