KiviDB 1.2.0 release notes

What changed in KiviDB 1.2.0: new commands, fixes and performance work in the latest release of the KiviDB server.

KiviDB is open source. v1.2.0 is out. Release notes · Download KiviDB Pricing Sign inStart free Back to Downloads Release version

Release notes

KiviDB v1.2.0

Released November 3, 2026 · Engine changes · Latest

1.2.0 is mostly about not losing writes, and being a better Redis. With the AOF on, a write is acknowledged only once it is in the file; transactions reach replicas as one step; failover elects the replica with the most data; reshards finish under writes and lose none; TLS changes without a restart; active defrag gives memory back; MSET across shards is over three times faster; search is stemmed and scored as in Redis. It also fixes two security advisories that affect 1.1.x, which gets no further release. Upgrade replicas first, and read Before you upgrade.

Download v1.2.0

Highlights

  • Security: ACL bypass through SORT patterns and multi-STORE (GHSA-6rw7-4fcr-r6j3), credentials in SLOWLOG, MONITOR and the log (GHSA-c4xj-63wm-4jj9)
  • With the AOF on, a write is acknowledged once its record is in the file, as in Redis
  • Failover elects the replica with the most data; a replica mid-sync never stands
  • TLS certificates, CAs and tls-port change with CONFIG SET; port 0 runs TLS only
  • Active defrag gives freed memory back, on by default; string values take less memory
  • MSET and MSETNX across shards over three times faster than 1.1.3
  • Search: TEXT fields stemmed and scored as in Redis, FT.SEARCH TIMEOUT, synonyms
  • Every file and image carries a signed build attestation

Security

ACL key permissions bypassed through SORT patterns and multi-STORE destinations (GHSA-6rw7-4fcr-r6j3)

A user whose ACL names some keys could read any key's value, or any hash field, with SORT or SORT_RO ... GET * or GET *->field, and learn the order of other keys with BY *. Such patterns now need read access to every key, as in Redis. SORT with two STOREs, and GEORADIUS or GEORADIUSBYMEMBER with two STORE or STOREDIST options, wrote to a key the ACL had not checked; XREADGROUP with a group or consumer named STREAMS read streams the ACL had not checked. Both are fixed.

Advisory GHSA-6rw7-4fcr-r6j3

Credentials in SLOWLOG, MONITOR and the log (GHSA-c4xj-63wm-4jj9)

A user allowed SLOWLOG GET could read passwords set with ACL SETUSER and the values of requirepass, masterauth, primaryauth, cluster-bus-secret and the TLS key passphrases set with CONFIG SET. MONITOR showed MIGRATE's AUTH and AUTH2 credentials, and the server log's line for CONFIG SET printed primaryauth and the TLS client key passphrase. They are now shown as (redacted).

Advisory GHSA-c4xj-63wm-4jj9

Durability

Acknowledged writes are kept

With the append-only file on, a write is now acknowledged only once its record is in the file, as in Redis, so a killed process keeps every write it acknowledged as long as the disk keeps up. A checkpoint no longer stalls writes on a slow disk, and a graceful shutdown keeps every write it acknowledged.

A transaction, or a script that writes more than once, reaches replicas and the AOF as one step. A clean shutdown waits up to shutdown-timeout (10 s) for its replicas to have every write, so after a restart they carry on instead of being sent the whole dataset, and a full sync under heavy writes now finishes.

Failover

Automatic failover elects the replica with the most data, and a replica stands only once it holds its master's data: never in the middle of a full sync. A manual failover whose election is slow no longer loses writes, and after a failover the shard's other replicas carry on instead of resyncing in full.

Features

Clusters

The bus keeps one connection per peer, and nodes can announce a separate client port (cluster-announce-client-port) for NodePorts and load balancers. redis-cli --cluster reshard runs to the end under writes and loses none of them, redis-cli --cluster fix closes a reshard that stopped halfway, and an import cut short by a restart cleans up after itself.

TLS without restarts

Certificates, CAs and tls-port change with CONFIG SET, and a server can turn TLS on while it runs. port 0 runs a server on TLS only, and tls-auth-clients-allowed-names accepts only client certificates whose names match.

Memory and speed

Active defrag gives memory freed by deletes back to the system and is on by default; string values take less memory. MSET and MSETNX of keys in many shards no longer queue behind each other: more than three times as many a second as 1.1.3 with 1,200 clients, and a lower tail.

Search and compatibility

TEXT fields are stemmed and scored as in Redis, SCORER is honoured, FT.SEARCH and FT.AGGREGATE take a TIMEOUT, and synonyms work. Dozens of fixes bring replies, errors, INFO and CLIENT LIST fields, keyspace events, Lua scripting and vector-set scores closer to Redis 8.10.

Signed releases

Every file and image carries a signed build attestation. Check one with gh attestation verify <file> --repo kividbio/kividb.

Before you upgrade

Upgrade replicas before their master, and take a backup

A 1.2.0 master sends transactions to its replicas wrapped in MULTI and EXEC; a 1.1.x replica still applies them but logs warnings. KiviDB Cloud upgrades a managed database's replicas before its primary.

There is no going back to 1.1.x once 1.2.0 has saved a time series with compaction rules: 1.1.x cannot read that snapshot. Take a backup first if you may need to go back.

With the AOF on, writes are slower

Waiting for the record costs 20-28% of SETs a second with 50 clients, and under 10% with one client; reads cost nothing. aof-ack-after-write no gives back 1.1.x's behaviour and speed, at the cost of losing the last few acknowledged writes to a killed process.

Behaviour that now matches Redis

CONFIG SET refuses unknown names and settings that only take effect at startup. SORT with a BY or GET pattern needs read access to every key. AUTH <password> is refused when no password is set. In scripts, pcall puts the message in the error itself and assert takes a string.

Search scores are Redis 8.10's and words also find their other forms; VSIM and VLINKS scores run from 0 to 1. A threshold set on the old scores needs adjusting; VERBATIM or NOSTEM keeps the old matching.

repl-backlog-size is 64 MB by default and is kept only while a server has replicas. A full sync can hold up to 1 GiB more on the master (repl-replica-sync-max-backlog-bytes), not counted against maxmemory. A server takes a lock on its data directory, so give each server its own.

Known issues

A power loss during an AOF checkpoint can leave a gap in the log (#277); a killed process, a crash or SHUTDOWN lose nothing. Memory freed by dropping a large vector index stays with the process until MEMORY PURGE. redis-cli --cluster reshard under heavy writes slows the source node's writes (#310). WAIT on an io_uring server can answer 0 too early under concurrency.

Upgrading

Take a backup, then upgrade replicas first and their master after. Download the v1.2.0 binary or package for your platform from GitHub, or pull kividb/kividb:v1.2.0 from Docker Hub, and replace your existing install. On KiviDB Cloud, new databases start on 1.2.0, and an existing database moves to it from its settings, replicas first. 1.1.x gets no further release. The full list is in the CHANGELOG on GitHub.

Go to Downloads Older: v1.1.3 KiviDB

A Redis-compatible in-memory database, written in Rust. Run it yourself or on KiviDB Cloud.

Product

Use cases

Compare

Developers

Company

Legal

© 2026 KIVIDB PRIVATE LIMITED CIN: U62011MP2026PTC083420 · GSTIN: 23AAMCK7754Q1ZO Indore, Madhya Pradesh, India

Redis® is a registered trademark of Redis Ltd. Dragonfly™ is a trademark of DragonflyDB Technologies Ltd. Valkey is a trademark of LF Projects, LLC. KiviDB is not affiliated with or endorsed by any of them. NVIDIA and NVIDIA Inception are trademarks of NVIDIA Corporation. All other trademarks are the property of their respective owners.