I'm anxious & excited to share Ember: a low-latency, memory-efficient distributed cache written in Rust. I designed it as a drop-in replacement for Redis, but with some modern twists that I've been iterating on and have been on my wishlist.
* Native Protobuf storage (so no string serialization overhead and can encode/decode in the DB)
* Full gRPC API alongside RESP3 (think bi-directional streaming support for pub/sub)
* Mature distributed systems foundations (Raft consensus, gossip failure detection, automatic failover, live resharding)
* Built-in vector storage with a much smaller footprint
* Single static binary, zero runtime deps, and no garbage collector pauses
* It's also a true drop-in replacement. No need to use ember-cli or any of the client libraries. Your code should hopefully "just work" without too many issues.
This whole thing started purely as a learning project. For the last 15 years or so, I've worked with Redis, distributed systems, and all the fun and painful parts of building reliable infrastructure. But I had never actually sat down and /implemented/ those concepts from scratch myself. I wanted to really understand them. Not just read papers or use someone else's code.
So I started small. `cargo new test-db` and a single main.rs file. "How does RESP3 parsing work?" and "Can I do a basic SET and GET command?" It was really messy, but it slowly grew. At some point, I realized this had turned into something very solid and performant. The benchmarks early on were very convincing, but that's because it was architecturally very simple in the beginning. Now there's full Raft for replication, shared-nothing sharding by core, gossip membership, and live slot migration, and it still punches above its weight. All of the benchmark stuff is secondary though. I'm just proud that it works reliably and that I learned so much along the way.
A huge thank you to the Redis community and especially antirez (Savatore Sanfilippo). I don't know if you'll see this, but you've been such an inspiration. Redis changed how the industry thinks about caching, and its elegance and simplicity have been a source of inspiration, long before this project. Hundreds of thousands of developers have built incredible things on it.
One side comment I want to mention: AI has been an absolute game-changer in getting this project where it is today. Models like Opus 4.5 and Gemini 3 helped me reason through tricky Raft edge cases, profile expensive calls, debug obscure concurrency bugs, generate > 1200 tests, and generally helped describe very hard to understand concepts in plain English. It let me learn faster, iterate quicker, and ship something I'm proud of in a fraction of the time it would have taken. Grateful for how these tools are democratizing deep systems work like this.
It still feels immature in some respects, but the core is stable. All of my benchmarks are shared with the GCP VM config so other folks can replicate. Like all projects, there will be bugs, but I'll be here for a while hacking on it to make it better. Please take a look and give it a shot with your workloads. Thanks for any feedback!
I grew up in a poor town that sourced water from the Cape Fear river. There were two major factories in our immediate area: one that made paper and the other made industrial chemicals. The Dupont plant mentioned in the article was 10 miles upstream from where we were. We knew it was better to buy bottled water than to drink what came through the pipes. Grateful for the scientists and journalists for their work exposing all of this.
Just remember: When you buy bottled water, you don't really know where it comes from, and what contaminants are in it.
Don't assume that bottled water is any safer (or more dangerous) than your tap. After all, when you look at the fine print of cheaper bottled waters, you'll often see something like "Sourced from the XXX municipal water supply."
I also remember staying at the Poland Springs resort and observing that they had septic tanks a 10 minute walk away from the "shrine" to the original "Poland Spring," and finding trash in the woods that had been there for years.
One 2021 study found PFAS in 39 out of 101 bottled water products that ranged in levels from almost zero to nearly 19 parts per trillion. David Strifling is director of the Water Law and Policy Initiative at Marquette University Law School. He said there’s no general assurance that bottled water is safer than tap water.
The meme that corporations exist exclusively for the benefit of shareholders is a very recent, very extreme phenomenon, yielding exactly the sort of results you would expect. Externalizing costs, especially in ways that are dispersed enough not to be addressable by any particular affected party, is the whole point of the modern enterprise. It wasn’t always this way and it need not be this way in the future.
> Most municipal water supplies are safer than the piping systems or the private wells.
I used to work in municipal water software and I don't think this statement can be said broadly. It helps to segregate discussion of water into segments:
- Water extraction and storage health
- Water mainline delivery health
- Water lateral/service line health
Extraction and storage are usually pretty good across the board. Mainline can vary and lateral/service line varies highly in quality.
Mainline health usually comes down to maintaining pressure and flow, especially at the end of a service area. In some cities you'll see them dump water from the hydrant, other cities don't have such good hygiene (and stagnant water is dangerous). Service lines have historically been considered on the owner to deal with; there's now federal funding to fight things line lead service lines (of which there are still huge amounts). Service lines do impact overall water health though, as not every water meter or mainline connection has backflow prevention.
I find your comment offensive: “don’t SUPPOSE x” is very different of “dont DO x” as it’s just a paraphrase of “x is a misconception”.
Furthermore he may be a minority (or not, all we know is you both have a different social circle) but that just make him someone with originals idea so let’s listen instead of blaming (please).
I might have misunderstood his comment (not english native) and present my apologies if i did.
However my understanding is that proclaiming someone opinion is a “minority outlier” without any more info or source is rude and close minded. Also, how do you understand “minority” in his comment?
It’s like saying “I have a different opinion of yours and I think your opinion is not popular here so shut up please.”
By the reactions, his post brought interest and more ideas from others so it’s a good think he didn’t auto-censored.
Sure. But if you know for a fact that your tap water is contaminated it’s logical to buy water from elsewhere. Maybe look for ones that have been filtered with RO.
We’ve been using a Meilisearch for the last six months or so and have been delighted with its performance and usability. It uses a fraction of the resources as Elasticsearch, and the language support is extensive and very active.
That being said, our cluster is much smaller than other ones I’ve worked with in the past, so I can’t comment on its reliability at massive scale. I’ve also been very impressed with how active contributors are on GitHub and in their Discord. Everyone seems like good people, and it’s a project I’m excited to keep using.
This is the thing I find when people post "ElasticSearch Alternative".
80% of ElasticSearch's value add (wrt search anyway) is all the clustering and frame work that allows you to span the search over tens or hundreds of machines "easily".
I think the same is true here. Probably the comparison should be with the underlying search libraries that ES sits on.
I suppose this comparison makes sense in a world where most people don't run their own servers much any more since the clustering etc would be a problem for the cloud offering and not the consumer.
> 80% of ElasticSearch's value add (wrt search anyway) is all the clustering
Or configurability. I looked at this again now that 1.0 is out, but besides the .NET client still being in an alpha state, it’s also very zero-configuration. There seems to be no configurability regarding tokenization strategies, for example.
Now, I certainly see the appeal, I barely understand my own ES code and meilisearch replicates probably 70% of it with no configuration at all, that’s impressive, but it also means that switching would mean giving up on those 30%.
Yeah, Elastic also brings advanced aggregates and filters, Kibana, nice UI where you can explore data and create dashboards easily and tons of bigger and smaller features. But in some areas both products are comparable.
This was the sense I got as well, though I have only started playing w/ Meilisearch. Clustering was one of the top 3 features that let Elasticsearch take over the market so quickly. In the playing around w/ Meilisearch I've done, it seems more like a replacement for something like Sphinx so far.
the n+1 graphql problem is more difficult than most people realize. graphcdn makes it incredibly easy to globally scale a backend application with dynamically changing queries. of course, it _is_ possible to hack together some clever cloudflare workers (i've tried), but it gets increasingly difficult to actually have the cache hit if you have a ton of changing fields (with nested values). then, there's the sunk cost of managing/tweaking everything if you're a small team. I also really like how clean and useful the visualizations are.
it's not for every use case, but it's clearly useful for the thousands of companies that have signed up and are paying them. :)
The example they give is basically Zapier for data?
"For example, you might want to figure out if the customer who just submitted a ticket is a high-value customer by checking the matching subscription in Stripe's data and whether there are any associated high-value deals with that customer's company in Salesforce."
No guarantees on traction, but folks doing integration work have gotten a fair bit of use. So as always - this might fail.
I think basic iCloud syncing between Macs should already work, just as part of the fact that Bike saves your outlines to some Mac OS file (not database). I know I need to do iOS support, as long as I stay financially viable I will do iOS support. But I still need to work on a few more basics in the macOS app first.
Bike will also read/write .opml files. You should be able to share with iOS outliner that way I think.
If it's at the stage where they're talking to partners, and it's expected to ship in less than a year, I'd argue that those are pretty clear indications that this isn't a skunkworks project that will be shelved.
I'm anxious & excited to share Ember: a low-latency, memory-efficient distributed cache written in Rust. I designed it as a drop-in replacement for Redis, but with some modern twists that I've been iterating on and have been on my wishlist.
* https://github.com/kacy/ember
* https://emberdb.com
Here's what makes Ember different IMO:
* Native Protobuf storage (so no string serialization overhead and can encode/decode in the DB)
* Full gRPC API alongside RESP3 (think bi-directional streaming support for pub/sub)
* Mature distributed systems foundations (Raft consensus, gossip failure detection, automatic failover, live resharding)
* Built-in vector storage with a much smaller footprint
* Single static binary, zero runtime deps, and no garbage collector pauses
* It's also a true drop-in replacement. No need to use ember-cli or any of the client libraries. Your code should hopefully "just work" without too many issues.
This whole thing started purely as a learning project. For the last 15 years or so, I've worked with Redis, distributed systems, and all the fun and painful parts of building reliable infrastructure. But I had never actually sat down and /implemented/ those concepts from scratch myself. I wanted to really understand them. Not just read papers or use someone else's code.
So I started small. `cargo new test-db` and a single main.rs file. "How does RESP3 parsing work?" and "Can I do a basic SET and GET command?" It was really messy, but it slowly grew. At some point, I realized this had turned into something very solid and performant. The benchmarks early on were very convincing, but that's because it was architecturally very simple in the beginning. Now there's full Raft for replication, shared-nothing sharding by core, gossip membership, and live slot migration, and it still punches above its weight. All of the benchmark stuff is secondary though. I'm just proud that it works reliably and that I learned so much along the way.
A huge thank you to the Redis community and especially antirez (Savatore Sanfilippo). I don't know if you'll see this, but you've been such an inspiration. Redis changed how the industry thinks about caching, and its elegance and simplicity have been a source of inspiration, long before this project. Hundreds of thousands of developers have built incredible things on it.
One side comment I want to mention: AI has been an absolute game-changer in getting this project where it is today. Models like Opus 4.5 and Gemini 3 helped me reason through tricky Raft edge cases, profile expensive calls, debug obscure concurrency bugs, generate > 1200 tests, and generally helped describe very hard to understand concepts in plain English. It let me learn faster, iterate quicker, and ship something I'm proud of in a fraction of the time it would have taken. Grateful for how these tools are democratizing deep systems work like this.
It still feels immature in some respects, but the core is stable. All of my benchmarks are shared with the GCP VM config so other folks can replicate. Like all projects, there will be bugs, but I'll be here for a while hacking on it to make it better. Please take a look and give it a shot with your workloads. Thanks for any feedback!
reply