13 comments

  • yawniek 2 minutes ago
    Congrats, very cool Project!

    And impressive benchmarks.will have to try it.

    Shameless plug: Did something similar but with on disk storage as an experiment ( https://github.com/yannick/marekvs ). Mostly geared towards testing interesting datastructures.

  • porker 7 minutes ago
    Congratulations on the project!

    I haven't run into problems with Dragonfly yet, was it only OOM you encountered with it? Garnet I had GC pauses causing problems, so I dropped that.

  • shepardrtc 31 minutes ago
    I don't care about AI being used to build it, or to write the site, but I do care about why its so much faster than redis. Antirez is pretty performance-obsessed. But outside of that, this looks like a fun project.
  • edoceo 1 hour ago
    Could you add Valkey to the benchmark? Curious about different key-types too, like list and hash. Also, big values (2KB) and small values (<256B)
    • esafak 51 minutes ago
      And MS Garnet.
      • murtazayusuf 5 minutes ago
        that will be part of the next benchmark run, my previous run showed kividb was head to head with Garnet, it was not better but also wasn't worse either. But I haven't tested it with kividb 1.1.0 yet
    • murtazayusuf 47 minutes ago
      I did run a benchmark against Valkey 9.1.2 with --io-threads 8 earlier, I will rerun it soon, but these were the results from the previous run, I haven’t been able to find someone who can independently verify these so if you would like then please proceed:

      At 100 B GET and pipeline 16, valkey is at 1.61M against 19.71M ops/s for kividb. For 1 KB GET, pipeline 16 it was 1.44M against 8.95M and at 100 B GET, no pipelining: 0.99M against 3.11M, but at pipeline 1 the load generator was the limit for the fast engines, so that row undersells all of them

      Values were 100 B and 1 KB, so the small case is covered but not 2 KB. That run only did strings and MSET and MGET. lists and hashes aren't in it yet. Both are a fair ask, and I'll add 2 KB values and LPUSH/LRANGE and HSET/HGETALL scenarios to the harness for the next run.

      • edoceo 24 minutes ago
        This seems a reasonable response but was [dead] so I vouched you. Was dead because it's BS or wrong or...?
        • murtazayusuf 6 minutes ago
          This benchmark was run on an earlier version of kividb, which still had several memory management issues, for example, in this test, the memory per key was around 250B as compared to 178B for redis, so probably that's why, I have not been able to publish these numbers yet, but since several people have raised this, I will be prioritizing it
  • ghm2180 1 hour ago
    Nice. I am curious if you would seek to maintain this with some kind of a foundation(apache) based funding or keep it internal to your work?

    > I used AI a lot, but I was the one making the design decisions based on the tests that claude picked from my history of troubleshooting sessions as part of my job.

    Cool, this seemed like a good learning experience, learning from testing it in a real world. I wonder if you plan to write up some of the experience in a blog or something?

    • murtazayusuf 2 minutes ago
      I haven't given much thought to it, but sounds like a good idea, I do have a blog section on my website, but I have kept it only for announcements and benchmark comparisons, and to boost the website for search appearances, But this seems a good idea, I will post the blog. Just to make it clear, it did start it as a side project, but currently I am persuing it full time. New contributors are always welcome
    • justincormack 14 minutes ago
      The Apache foundation does not fund projects, nor do other foundations.
  • murtazayusuf 3 hours ago
    Just adding my benchmarking repo, that contains terraform code and scripts using which I performed the benchmarks, helpful for re-evaluating and verifying the numbers published on our website. And possibly to learn where we might have gone wrong.

    https://github.com/kividbio/kivi-benchmark

  • kingcauchy 1 hour ago
    How did overall memory footprint look during ingestion vs Redis? Have any tradeoff graphs as the dataset gets larger and with mixed workloads?
  • 6622331623 43 minutes ago
    I thought this project was interesting so I went to the blog and noticed I was reading AI. I am sure the same amount of effort was put into this project.
  • syepes 1 hour ago
    How does this compare and benchmark with https://github.com/apache/kvrocks
    • murtazayusuf 1 hour ago
      I haven’t tested against it, that will be next, i will run the benchmarks on the same method and publish the results, or if you want to, you can as well. Even if it performs poorly, I will report that too like we did with dragonfly.
    • sligbad 1 hour ago
      Well Kvrocks is on disk, not in memory.
      • murtazayusuf 1 hour ago
        That's true, however the intention to run the benchmark would be against most of the widely used commands and see if there is any command or use case where kividb might be a better fit than kvrocks. strictly speaking from hardware performance, it would certainly beat kvrocks in terms of sheer throughput, but in terms of volume where does it stand would be something interesting to experiment.
      • ChocolateGod 40 minutes ago
        Kvrocks is both iirc, since it can cache the rocksdb data in memory.
  • latencyharbor 1 hour ago
    [flagged]
  • falconBrisk47 2 hours ago
    Pipelined throughput that high usually means the loadgen is the thing you're measuring. Past ~5M ops/sec we needed 3 separate memtier hosts to keep the client off the critical path. Any p99 numbers alongside it?
  • hahahoo 2 hours ago
    [flagged]
  • saurilabs 2 hours ago
    Has there been heavy usage of AI in building this?
    • murtazayusuf 1 hour ago
      Yes, for building test cases, for code refactoring, and commenting, because it writes cleaner code, but yeah design decisions were mine. The benchmarks I ran were what dragonfly advertises, so scripts for those were written with AI. For redis compatibility, we run redis’ own unit test and e2e test suite with every change to make sure I am not breaking anything each change and you can review it in the repo.
    • green-salt 1 hour ago
      there's a .claude/ in the gitignore