Plans for Redis 3.2
antirez.com
antirez.com
Most of the developers on my team struggle to build simple CRUD web apps, wasting long hours complaining about how wrong the Domain models is or how why this things is not in that place.
This isn't to take away from Salvatore, who is obviously talented and seems to have a knack for researching and implementing the data structures in an efficient manner.
Low-level high-perf programs are extremely demanding and require a good deal of care and persistence.
"The simplistic low-level nature of redis probably helps avoid fatigue."
Yea I'm going to bet you never wrote anything where microseconds or L1 cache misses mattered.
Salvatore has found a niche where he can see these optimized implementations to their end. I would imagine there is a certain level of satisfaction that comes from thoroughly researching a topic, implementing it as best you can, and deploying it to the public you're popular with. It probably helps having firm control of the project with less red tape.
It's like a comparison between a craft woodworker and someone who would like to play around with the concepts, but doesn't have the tools, time or know how, or they're told there is no point in building your own furniture from scratch, so they are instead building Ikea furniture.
Maybe it's a case of "developer interest dissonance". Technical people digging technical problems (cache hit issues) versus business logic... which might be why they "got into computers ".
Meanwhile, according to the official website [1], somebody else is already doing it:
> Pivotal, the official sponsor of Redis, offers Redis support for developers and 24x7 production Redis deployments.
And of course nothing prevents any other company from competing in the same space. Perhaps one of the startups that use Redis a lot could "pivot" into a Redis commercial support company.
Although, to be honest, the page linked from the Redis site (http://www.pivotal.io/big-data/redis) doesn't seem to have much to say on the matter. Looks like an ad for their cloud platform, and I wouldn't have guessed they offer support for Redis itself.
At the coalface, Pivotal also includes Pivotal Labs (for whom I work and from which the larger company took its name), which includes people who've done a lot of production Redis work.
And we can always ask Salvatore for a tip if we get stuck.
Similarly, I have access to Hadoop, Gemfire, Greenplum, Cloud Foundry, RabbitMQ or Spring devs for help. Being inside the same tent is nifty.
Besides Pivotal's commercial support for Redis (which, from what I've heard, is superb) there are also at least two hardcore Redis community members who're providing professional support for Redis deployments - for more details, contact Michel Martens and Damian Janowski.
Redis Labs, my employer, is also heavily into Redis (duh) so naturally we give support for our product line that consists of a Redis on-prem solution and a cloud service.
I see you guys have a service offering on PWS. Nifty.
As for goodness @ the Pivotal site, this is one of my favorite - dying to see it grow: https://support.pivotal.io/hc/en-us/categories/200308268-Ope...
I can see a broader need for enterprise-level support for custom builds, perhaps.
https://aphyr.com/posts/283-call-me-maybe-redis
Recommends using it on a single server or if distributed as a cache or for data that can tolerate write losses.
The announcement page you linked to doesn't let me copy any text on iOS, but he's basically saying that if you get a partition and resolve it, the merge algorithm used is prone to data loss.
I don't know if Redis Cluster has improved since.
Redis uses asynchronous replication, in order to have a latency you expect for most use cases where Redis is used, however after the tests Aphyr performed we tried to improve what was possible to improve without transforming Redis into something completely different. Basically even with asynchronous replication and a drastic merge function (last failover wins), you can still do things to improve the real world behavior of the system, and this is what we did:
1) Improve Redis master-slave protocol in order to have asynchronous acknowledges, at least. So it is now possible, during partitions, to have a bound data loss: after some time the isolated master stops accepting writes. This is implemented both in Redis Cluster (natively) and in Redis vanilla replication (so can be used with Sentinel or other failover mechanisms).
2) Use a replication offset in order to try, during failovers, to pick the slave with the most updated state.
Currently it is just an idea but in the future for certain data types and operations, Redis Cluster may take a log of the operations that were not acknowledged by all the slaves of a given master, and when the master is turned into a slave, it would re-play the log into the new master, at least for operations which are idempotent and commutative. This would allow for safer writes. The other (more used) approach of merging values directly is not very easy to perform with Redis for a number of reasons.