HNHacker News
TopNewBestAskShowJobs

reconditerose

325 karma · joined October 19, 2021

submissionscomments
reconditerose··on Redict 7.3.0, a copyleft fork of Redis, is now available
> I'm not sure that this is true, at least not the commercial part. Redis clients are pretty simple (compared to Redis itself, at least).

I'll get on my soap box then. The redis client ecosystem is fractured and awful, and it's mostly Cluster's fault. Getting cluster right is really hard, and most clients do it inconsistently and get something wrong, if they tried at all (hiredict doesn't for example).

> I think there was some mention at some point about our two forks working together on maintenance of the protocol specification independently of Redis Ltd, which would be a good way to ensure that the clients remain broadly compatible with both of our forks.

Yeah, I'm still fully aligned with this.

reconditerose··on Redict 7.3.0, a copyleft fork of Redis, is now available
As someone who has extensively worked on a Redis fork at AWS and worked with the company for 6 years, I wouldn't worry about Redis merging stuff from Valkey. We believe they refused a huge number of PRs because we believe it would have messed with their internal features. (We can't prove this, because they never discussed it publicly). One of the main reasons I started contributing to Redis was to help my team at AWS get out of the business of merging conflicts.

> Interestingly, there have only been two commits from a single developer to the Redis repo in the last two weeks since the license change. A huge decrease.

It's just a guy from Redis. It's not even one of the three former maintainers (Oran, Yossi, or Itamar). The number of open PRs is also dramatically down (it was around 550 when I last looked before the fork, since I've gotten a lot of notifications from old PRs of people refusing the CLA).

reconditerose··on Redict 7.3.0, a copyleft fork of Redis, is now available
Hey, I am one of the maintainers of Valkey, I'll try to answer.

I think there is a few things I would like to see in the mid to short term. We're trying to make a lot of the core datastructures more efficient (both in terms of memory and performance) as well as the main dictionary. Valkey 8.0 (or whatever first major version we have) will have lower overhead per key-value pair. Multithreading performance is nice, but as you mentioned most people don't need it. It gives folks a lot of runway if they need to scale but don't want to use clustering, and can also be a "quick fix" for certain types of P99 or higher latency spikes. Clustering is also really hard to use today, and a lot of the current folks want to fix that. It's a huge community pain point. Observability is another pain point I would like to improve. (Disclosure, I work at AWS as well) We see a lot of customers ask about "why did we see a performance issue", and Redis really doesn't provide a lot of introspection to diagnose those issues.

Another big area, which maybe will work for redict, is we want better integration with other OSS projects, especially CNCF projects like envoy, open-telemetry, K8s. There are a lot of self-developed projects floating around, we're hoping we can pull all of this together to make a more cohesive project for people to use instead of what we see today.

I think another big issue will be clients. I'm concerned Redis will try to inject a poison pill into the clients they own to make it so they can only talk to "official" Redis versions. Ultimately a small community will struggle to maintain a lot of clients, so I think we need a larger (and likely commercial) investment into keeping clients open. We will likely passively support redict with our clients, so they'll get that for free.

We want to do all the cool feature stuff to (timeseries, JSON, bloom, RAG), but I would like to keep the core pretty clean.

reconditerose··on Linux Foundation launches an open source fork of Redis
Hi, co-creator of Valkey here. I'm not that worried about it. There are a lot of people who have tried to maintain Redis folks, my employer AWS has one such fork I know very well, and they quickly become extremely hard to maintain with your own code. These aren't problems Redis wants to solve, they are off in their GenAI space building fancy extensions. For the next year or so it might be a real concern, but we are thinking long term, and I don't think it'll matter for long.

So, we thought the best approach was to stick with the license and get us into a vendor neutral foundation. We haven't ruled out LGPL, we just didn't make the change unilaterally and as a foundational part of the fork. We just want to keep building :)

reconditerose··on Redis relicensing: Why is this a problem?
> I also disagree with that post’s assertion that Redis contributions would have been withheld if it started with a different license. I expect contributions would come from existing users of Redis who wanted new features themselves and were willing to sponsor the related effort, regardless of the license in use.

This is partially true, but is missing the fact that all of the recent major contributors were coming from other IT companies (AWS, alibaba, tencent, huawei, Google). None of them would have contributed with this license change. Most of the major features (TLS, ACLs V2, sharded pubsub, Functions, multi-slot dictionary) were all funded by companies, not individuals. It's hard for an individual to contribute complex features these days, since systems are so complex. Even those that do, it required a lot of help from folks like me or other contributors to get it merged.

Disclosure, I was the pervious maintainer of Redis and am employed by AWS.

reconditerose··on Redis Renamed to Redict
Drew seems like a great guy, but he wasn't the one maintaining Redis when the relicense happened. There are non-Redis contributors who are trying to figure out what to do nest, and people keep peppering me (one of those contributors) about this fork. I like the meta-point Andrew makes that Redis is the one that's forking, but the framing it around some other arbitrary fork doesn't sit well with me.
reconditerose··on Redis Renamed to Redict
> I don’t think I’m happy with the licence choice here (it should stay BSD-3-Clause). At least the primary repository isn’t on sourcehut, people might actually contribute to it.

The old development community is regrouping under https://github.com/placeholderkv/placeholderkv. As of right now we don't intend to change the license, we just want a more balanced governance that prevents a corporate entity to make this type of choice. We are currently planning a five person governance, with everyone coming from a different company. (We would love some independent maintainers, but there weren't any at the time

reconditerose··on Redis changes license from BSD-3 to dual RSALv2+SSPLv1
Several Redis maintainers and contributors moved to development here, https://github.com/madolson/placeholderkv. KeyDB is not bad though, it's an older fork that isn't very widely adopted.
reconditerose··on Redis adopts dual source-available licensing
> They get paid for it. Don't try to spin this as if it's someone people working on it in their spare time out of the goodness of their heart. It's just their job.

No, you can't have this both ways. I'm the main contributor from AWS, and I've worked many times on weekends because I care about open source. I like helping people, I don't need to be paid to do it. Many of the AWS folks that made changes were normal engineers that were excited to be part of Redis. https://github.com/redis/redis/pull/10419 and https://github.com/redis/redis/pull/8621 are both examples of features someone from AWS built in their free time. We're all upset about this. Not because Redis deserves to get paid, it's that they acted like they were being good stewards of the open-source community and then they changed their mind.

reconditerose··on Redis adopts dual source-available licensing
The beef I have here is that Redis also takes credit for community work. Most of the heavy lifting came from antirez, who created and ran the project up until 2020. (It's worth conceding that Redis did compensate antirez). At that time Redis created an open governing board that took over, with a majority of contributions coming from the community during this time (~25% of contributions came from Redis engineers, ~75% from the community, including ~3% that came from me personally). They own the trademark and the repository, so they can do what they want, but I take issue with the optics that this is really AWS or GCPs or some other vendors fault that Redis decided to blind side it's development community. Redis gave some of us a heads up this was happening, but most people are finding out by a blog post that Redis dissolved the previous open-governance (a fact they barely address in the blog post). We had to drop weeks of work on the floor because we could not longer finish it.
reconditerose··on Redis adopts dual source-available licensing
Don't worry, if there is a fork that is the first thing I will contribute to. I build one that prints out various fractals, but never contributed it.
reconditerose··on Redis adopts dual source-available licensing
Exactly. Redis (the company) had plenty of opportunity to monetize either a cloud offering or their enterprise offering. They have a lot of cool technology like vector search and time series extensions that people will readily pay for. They could have found a path of moving the core to a foundation and continuing to make money with their added value. They're choosing to get the value they can out of the open-source stack. It might work out well for them, but I can't believe it will be good in the long term for Redis users.
reconditerose··on Redis adopts dual source-available licensing
Redis was open before the trademark was acquired from antirez by Garantia Data, who then re-branded themselves as RedisLabs, and then as Redis. This was definitely not a predestined outcome, there are plenty of other foundational open source server software that transitioned to a software foundation. While I worked on the redis core team (https://redis.com/blog/new-governance-for-redis/), I advocated to move it to a foundation.
reconditerose··on Redis adopts dual source-available licensing
Yeah, https://redis.com/press/redis-ceo-succession/, seems to be the case here. It took them a little over a year to decide open-source isn't profitable and move away.
reconditerose··on Redis adopts dual source-available licensing
Redis Inc. is moving the https://github.com/redis/redis/ project away from the three part BSD license to a dual license using two non-OSI approved license. This comes after previous comment from them saying that "... the Redis core license, which is and will always be licensed under the 3-Clause- BSD". (https://redis.com/blog/redis-labs-modules-license-changes/)
reconditerose··on AWS reveals new Redis client
For those that don't click through, the announcements is more of a preview, and has limited scope (only supports a subset of the commands and only support Python and Node). It's entirely open-source with a liberal license and you can find the source here: https://github.com/aws/glide-for-redis/.

The main innovation that makes it interesting is that it uses a common rust core, built on top of redis-rs, to implement the heavy lifting of cluster topology and connection management. This code is much harder to implement correctly compared to the RESP protocol for simple commands. Higher level language wrappers interact with this core over a protobuf based protocol.

The design is flexible, in the future it could support alternative backends (like memcached) and should be easily extensible for for new languages. I know the team is looking for folks interested in contributing.

reconditerose··on AWS reveals new Redis client
This has nothing to do with licensing. The motivation was that the various Redis clients are inconsistently being maintained, have different features, and perform differently. Having a core rust implementation handle the heavy lifting makes it easier to build the per-language bindings.
reconditerose··on In-memory database Redis wants to dabble in disk
It's really bad. The problem is that the swapping of pages is constantly stalling the main Redis thread, which is not built for parallelism. Redis is built around a single highly efficient thread, so stalling it for 250us to pull a page from disk instantly reduces the throughput by an order of magnitude.
reconditerose··on In-memory database Redis wants to dabble in disk
I'll bite. I think with most relational and document databases, my view of the "classical world", you are often storing all of your data in tables or documents in a structured way. Normalizing the data where possible. You're then building indexes on that data to pull it out in a useful operational, optimizing for the most common operations. If a new use case comes up, you add some more tables, add some constraints, and create some new indexes.

I think with Redis, you are starting knowing that your use case needs to be fast. You start with the access patterns and fit that into key/value lookups (or search with modules). You're typically denormalizing the data, duplicating it or aggregating it from other places, so that you can serve operational data fast. Otherwise, just use in-memory SQL.

reconditerose··on In-memory database Redis wants to dabble in disk
It is part of the drive to make Redis "more like your classic database," he said. In the future, support for natural language queries and enhanced vector and feature store capabilities will be added.

Seems way off the mark for why people use Redis. Developers use it precisely because it's not like their classic databases.

reconditerose··on OSS Redis 7.2 is now GA
Release is focused on incremental performance and memory improvements to various datastructures, a couple of new commands, and minor features to improve manageability.
reconditerose··on Dragonfly Is Production Ready (and we raised $21M)
I wouldn't take their latency numbers too seriously since their measure isn't relative to the throughput. It's not always obvious, but the latency of high performance is tightly coupled with throughput. The latency of high performance systems is the server side execution time (for Redis that is a couple of microseconds), the network hop (probably a couple of hundred microseconds), and the congestion on the server (this is the time it takes the server to actually getting around to processing your request, since the server probably needs to handle other requests first before getting around to yours). The congestion, is directly tied to the throughput.

The most useful measurement I've seen is you pick a latency target, and evaluate how many QPS you can send to the server that meets that latency target. That gives a fairly simple dimension to compare to.

reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
It's just marketing.
reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
> It matters a lot for where i work, we believe multithreading is holding redis peformance back.

Do you run stand alone Redis or Redis cluster? Multithreading is a strategy, but it isn't the only strategy to improving raw performance.

> is there somewhere i can read more about that? curious about the server needs to do that. i worth key/value clusters a little larger then that. if possible it would be cool to use redis for it.

Redis scales to about ~1000 nodes with each node supporting about 200k qps, math gets you to around 200m qps as the practical upper bound for Redis these days. Multithreading would potentially help us push clusters to the billion RPS boundary.

reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
I think that is a pretty baseless claim, even more so given that the project had a complete leadership change only 2 years ago. There is a lot of interest in revamping the internals of Redis while still trying to maintain the original tenets that established Redis. There isn't much justification for saying it could only be changed from the outside when, AFAIK, you didn't try to engage with the system at all.
reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
It won't change the conclusion, but we saw a lot less copy-on-write usage for most workloads.
reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
Yes, the core folks in Redis now have outlined a plan for moving towards multi-threaded awhile ago. It's honestly not made a lot of progress because raw performance matters a lot less than is argued here. As was succinctly mentioned by antirez already, Redis scales comfortably to 100s of millions of QPS with cluster mode. So, it's really building a lot of custom functionality to support better vertical scaling. Which is useful, especially when the vertical scaling keeps you on a single process.

The conversation happened here, https://github.com/redis/redis/issues/8340, and it's not like the most pressing issue for the project. It's also not as complex as what was implemented for dragonfly, which basically has native support from the ground up for concurrent programming during command execution. It would be hard to do in C as well.

reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
I actually think Redis really needs to trend towards a forkless approach for replication. Although copy-on-write provides a predictable form of memory usage, it does cause rather high memory utilization and requires a good bit of over provisioning.

There was an optimization built for Redis 7 where we actually start return copied memory pages back to the kernel, https://github.com/redis/redis/pull/8974, I wonder if the testing provided on Dragonfly includes this optimization.

reconditerose··on Dragonflydb – A modern replacement for Redis and Memcached
As one of the folks that currently works on Redis, I want to highlight the "Redis can be improved and should be improved". There is a lot of really good ideas put forth that are likely worth consideration in the Redis project as well. There has been a lot of conversations about renewing multi-threading, especially to address the point of simplifying management and better resource utilization.

Glad to see you guys made a lot of progress, although a little disappointing you chose to go down the path of building yet another source available DB and not contributing to open source.

reconditerose··on Redis Anti-Patterns
I think the point was that you lose the type information provided by JSON when you store the data in a hash. There is no way to tell the difference between a string "1" and an integer 1 when stored as values in a Redis Hash, since the integer will be converted to a string.
← PreviousPage 2 of 3Next →