Any time these "much faster than Redis" databases come up, the sysadmin in me wonders how many people have had actual performance limitation issues with Redis. I've seen Redis servers handle hundreds of GB of traffic per hour. I've worked at companies where Aerospike and others are proposed as replacements for Redis because "they're faster" - and I point out the 98% idle CPUs on the Redis server, and the near-100%-us…
A multithreaded fork of Redis that is faster
21–30 of 164 posts
Re: A multithreaded fork of Redis that is faster
#22I've always considered the single-threaded nature of Redis to be one of its greatest features.
Can you elaborate on why? As someone who works on parallel/concurrent algorithms and data structures a single-threaded system design seems anathema to most research over the past decade (maybe excluding H-Store, which uses local single-threadedness in an interesting way).
It also isn't exactly single threaded. It calls fork when it wants to persist data to disk, which is functionally similar to starting up a thread to do disk IO.
Re: A multithreaded fork of Redis that is faster
#23Any time these "much faster than Redis" databases come up, the sysadmin in me wonders how many people have had actual performance limitation issues with Redis. I've seen Redis servers handle hundreds of GB of traffic per hour. I've worked at companies where Aerospike and others are proposed as replacements for Redis because "they're faster" - and I point out the 98% idle CPUs on the Redis server, and the near-100%-us…
Re: A multithreaded fork of Redis that is faster
#24Since this has been around for awhile, why hasn't Redis adopted this strategy into core?
Re: A multithreaded fork of Redis that is faster
#25Since this has been around for awhile, why hasn't Redis adopted this strategy into core?
> Another thing to note is that Redis is not Memcached, but, like memcached, is an in-memory system. To make multithreaded an in-memory system like memcached, with a very simple data model, makes a lot of sense. A multi-threaded on-disk store is mandatory. A multi-threaded complex in-memory system is in the middle where things become ugly: Redis clients are not isolated, and data structures are complex. A thread doing LPUSH need to serve other threads doing LPOP. There is less to gain, and a lot of complexity to add.
Re: A multithreaded fork of Redis that is faster
#26Earlier quoted context omitted.
Only one thread can access the data at any given time, so it seems like most of the things you'd expect to be guaranteed by a single thread still are. I found this comment particularly interesting Unlike most databases the core data structure is the fastest part of the system. Most of the query time comes from parsing the REPL protocol and copying data to/from the network. I wonder if anyone in the Redis ecosphere ha…
The human-readable/writable protocol is one of my favorite things about Redis, tbh. I can see cases where a really optimized system could benefit from a binary protocol, but I suspect it'd be a loss for most people.
Re: A multithreaded fork of Redis that is faster
#27I've always considered the single-threaded nature of Redis to be one of its greatest features.
Only one thread can access the data at any given time, so it seems like most of the things you'd expect to be guaranteed by a single thread still are. I found this comment particularly interesting Unlike most databases the core data structure is the fastest part of the system. Most of the query time comes from parsing the REPL protocol and copying data to/from the network. I wonder if anyone in the Redis ecosphere ha…
"Unlike most databases the core data structure is the fastest part of the system. Most of the query time comes from parsing the REPL protocol and copying data to/from the network."
Re: A multithreaded fork of Redis that is faster
#28I guess I can no longer use Redis. I mean what can the use case of normal Redis possibly be?
Re: A multithreaded fork of Redis that is faster
#29Re: A multithreaded fork of Redis that is faster
#30I guess I can no longer use Redis. I mean what can the use case of normal Redis possibly be?
It works, it's simple, and it's battle tested.