While perusing the redis docs I stumbled upon a thing that troubled me. I read that without pipelining Set operations have more throughput than Get operations and this is strange. I read this post https://stackoverflow.com/questions/14600908/why-is-redis-set-performance-better-than-get and also this https://redis.io/topics/pipelining and I understood that with pipelining we get more throughput with Get operations rather than Set operations because we measure more correctly the performance. But without using pipelining how is it possible, even though we are measuring I/O to have more throughput in Set operation? Aren't Get operations supposed to take less cycles to be executed than Set operations in the first place? Can you please give me a thorough explanation to this?
Comment From: madolson
I'm not sure where you read that SET's should be faster than GET's, the official redis benchmark page has them as more or less equivalent without pipelining in some situations. After network TCP parsing, most of the CPU time of a simple Redis command is going to be memory allocations and looking up if a key already existing in the main dictionary, so they should actually be pretty comparable.
I'm guessing that some of the data documented here: https://redis.io/topics/benchmarks is probably not done very consistently. Doing only 100k requests isn't enough to establish a consistent throughput metric.