A multithreaded fork of Redis that is faster
81–90 of 164 posts
Re: A multithreaded fork of Redis that is faster
#82Earlier quoted context omitted.
True, it's rarely just raw performance. KeyDB has other advantages like multi-threading and disk-based persistence (instead of being limited by RAM) that makes it better at utilizing your server resources and handling larger scales.
But isn't the point of Redis is to be used as a caching layer instead of persistent layer
It would be great to remove limitations like RAM-only capacity in exchange for a slight performance hit, and while also gaining better core utilization. We used ScyllaDB (a very fast cassandra clone) in the past for the cpu/disk scalability but always felt Redis offered better APIs. Now it's a real option.
Re: A multithreaded fork of Redis that is faster
#83Earlier quoted context omitted.
But what if you could have the speed of RAM-based storage, and still have persistence? Sounds pretty appealing to me, personally.
You already get this with either Redis or Keydb. The problem is that to avoid the disk being the bottleneck you must write to RAM, then later to the disk (you can't wait for confirmation that it was written) which means that even though a key may successfully be written to the DB, it hasn't been confirmed to persist. Basically redis can't necessarily guarantee data safety - which is perfectly fine for it's normal use…
Re: A multithreaded fork of Redis that is faster
#84So this year on RedisConf Antirez demoed threaded version for Redis (only transport needs to be multi-threaded, core remains single threaded). Numbers were already amazing. I will pick the community version of Redis any day over forks.
Re: A multithreaded fork of Redis that is faster
#85Earlier quoted context omitted.
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).
This reminds me of LMAX, who found the fastest way to build their stock exchange was to make the core logic single-threaded, surrounded by multithreaded I/O: https://www.martinfowler.com/articles/lmax.html I believe other (grown-up/legacy!) exchanges work the same way. I wonder how much of the direction of concurrency research is driven by the fact that there is much more publishable work to be done in managing concu…
Re: A multithreaded fork of Redis that is faster
#86Any 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
#87Friendly reminder that Kyoto Tycoon might be an option. Has real persistence (not just dump everything / reload everything, or cripple performance by turning on aof), is multi-threaded, scriptable via lua, amazing performance.
Re: A multithreaded fork of Redis that is faster
#88Any 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…
True, it's rarely just raw performance. KeyDB has other advantages like multi-threading and disk-based persistence (instead of being limited by RAM) that makes it better at utilizing your server resources and handling larger scales.
What are the advantages of "multi-threading" other than for performance?
Re: A multithreaded fork of Redis that is faster
#89Earlier quoted context omitted.
Doesn't that end up duplicating lots of data and work since the processes are independent? They don't share data do they?
fork() on Linux (and many other OSes) shares pages between the parent/child processes in a copy-on-write scheme
Re: A multithreaded fork of Redis that is faster
#90So this year on RedisConf Antirez demoed threaded version for Redis (only transport needs to be multi-threaded, core remains single threaded). Numbers were already amazing. I will pick the community version of Redis any day over forks.
So he changed his mind regarding threads? Will it actually be committed? or are they more or an experiment.