Skip to content

v6.0.0

Choose a tag to compare

@DvirDukhan DvirDukhan released this 29 Sep 07:11
· 4 commits to 6.0 since this release
2b26fd7

FalkorDB 6.0.0

FalkorDB 6.0 is the first release of the new FalkorDB engine, written in Rust. It replaces the C engine that shipped in every 4.x release.

For applications nothing changes: it is still a Redis module named graph, with the same GRAPH.* commands, the same Cypher, and the same client libraries. What changes is how replication works and which packages are published. Read Upgrading from 4.x before moving a production deployment.

Upgrading from 4.x

Replication

Don't mix 4.x and 6.0 in the same primary/replica set. 6.0 replicates writes only as effects in a new format, v3 (#2570, #2754), which 4.x can't read, and 6.0 can't apply the effects 4.x sends. Upgrade every node in a replication group together.

Configuration

  • EFFECTS_THRESHOLD is accepted but ignored: effects are now the only replication mechanism. GRAPH.CONFIG GET still returns the value you set, so existing config files keep working.
  • TIMEOUT stays deprecated, as in 4.x. Use TIMEOUT_DEFAULT and TIMEOUT_MAX.

Packages

Docker. falkordb/falkordb and falkordb/falkordb-server on Docker Hub and GHCR:

Tag Now points at
6.0.0, latest 6.0 (Rust engine), amd64 + arm64
edge the latest main build (Rust engine); edge-rs is a deprecated alias
v4.x.y, edge-c the C engine, unchanged
latest-alpine, *-alpine still the C engine (4.20.7). 6.0 has no Alpine images.

The falkordb/falkordb image bundles FalkorDB Browser on port 3000, as before.

Module binaries attached to this release, with SHA256SUMS:

Asset Platform
falkordb-x64.so Linux x86-64
falkordb-arm64v8.so Linux arm64
falkordb-rhel9-x64.so RHEL 9 x86-64
falkordb-amazonlinux2023-x64.so Amazon Linux 2023 x86-64

4.20 also published Alpine, RHEL 8, macOS and debug-* builds. 6.0 does not publish those yet.

What's different from 4.20.7

  • New engine. The query engine is new code, written in Rust. Your queries and clients carry over: the GRAPH.* commands and Cypher are the same.
  • Replicas apply changes, they don't re-run queries. 4.x sent some writes to replicas as the query text, and the replica ran the query again. 6.0 always sends the resulting changes, so a replica never re-executes a write. EFFECTS_THRESHOLD, which chose between the two, is now ignored.
  • Newer search engine. Full-text and vector indexes run on RediSearch 8.6.1, up from 2.6.23. Full-text scoring still defaults to TFIDF, so scores match 4.x.
  • GRAPH.BULK no longer reserves memory from the counts a client declares up front, so a wrong or malicious count can't exhaust the server's memory (#2444).
  • Same Redis. 6.0 is built on Redis 8.10.2, as is 4.20.7.

Not in 6.0 yet

Algorithms. 6.0 has the same procedures as 4.20.7, and you lose nothing by upgrading. These algorithms were developed for the C engine after 4.20 and have not shipped in any release. They are being ported to the new engine:

  • A* shortest paths (algo.AStar), guided by latitude/longitude, with a k-shortest-paths variant (#2947).
  • Customizable Contraction Hierarchies (algo.CCH, algo.CCH.query), for fast repeated shortest-path queries (#2948).
  • Leiden and Louvain community detection (algo.leiden, algo.louvain), still in development (#2949).

Packages. 6.0 publishes no Alpine images, and no Alpine, RHEL 8, macOS or debug-* module builds (see Packages). latest-alpine stays on 4.20.7.

Mixed-engine replication. A 4.x node and a 6.0 node can't replicate to each other (see Upgrading from 4.x).

If you ran the preview images (edge, edge-rs)

The new engine has been available as a preview since August. Changes since then:

  • Faster queries, especially filters and label checks, multi-hop traversals, queries with many parameters, aggregations, and deleting nodes.
  • Less memory on write-heavy workloads.
  • Crash and hang fixes: very deeply nested expressions, nested index scans, pattern comprehensions, algo.SPpaths on large graphs, and shutdown under heavy telemetry.
  • Wrong-result fixes around NULL (joins, CASE, composite UNIQUE constraints), a label removed and re-added in one query, and deleting an edge created earlier in the same query.
  • Closer to 4.x behaviour: GRAPH.INFO output, NUL bytes in queries, and INFO no longer showing RediSearch's version as FalkorDB's (#2915).
  • Docker image fixes: the bundled Browser starts, and redis-sentinel, redis-check-rdb and redis-check-aof are back.

The full list is in the pull requests merged into main since #2279.