This is an automated email from the ASF dual-hosted git repository.
hulk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/kvrocks-website.git
The following commit(s) were added to refs/heads/main by this push:
new 183d1efd Add new release blog (#360)
183d1efd is described below
commit 183d1efdf88d7881366d748d4619b467140b6df0
Author: hulk <[email protected]>
AuthorDate: Fri Feb 27 21:11:53 2026 +0800
Add new release blog (#360)
---
blog/2026-02-27-release-2-15-0/index.md | 90 +++++++++++++++++++++++++++++++++
blog/authors.yml | 2 +-
2 files changed, 91 insertions(+), 1 deletion(-)
diff --git a/blog/2026-02-27-release-2-15-0/index.md
b/blog/2026-02-27-release-2-15-0/index.md
new file mode 100644
index 00000000..f8ee3c27
--- /dev/null
+++ b/blog/2026-02-27-release-2-15-0/index.md
@@ -0,0 +1,90 @@
+---
+slug: release-2-15-0
+title: "Apache Kvrocks Release 2.15.0"
+authors: [hulk]
+---
+
+This release marks a significant step forward in Redis compatibility: the new
`redis-databases` option closes the gap of SELECT command between Kvrocks and
Redis. Applications that rely on Redis's multi-database model can now migrate
to Kvrocks without any code changes.
+
+Beyond that, this release expands TimeSeries and TDigest command coverage and
tightens replication reliability — all while upgrading the C++ standard to
C++20 and RocksDB to v10.10.1.
+
+**Highlights:**
+
+- **Support SELECT database** — Kvrocks can now emulate Redis's multi-database
model, unblocking migrations from Redis deployments that use `SELECT` to switch
between logical databases
+- **New TimeSeries commands** — TS.MREVRANGE, TS.QUERYINDEX, and TS.ALTER
round out the time-series API surface for analytics-heavy workloads
+- **New TDigest commands** — TDIGEST.RANK, TDIGEST.REVRANK, TDIGEST.BYRANK,
and TDIGEST.BYREVRANK enable percentile and rank queries on streaming data
+
+<!--truncate-->
+
+### Support SELECT Database
+
+Kvrocks uses a namespace mechanism as its multi-tenancy primitive, which
differs from Redis's numbered logical databases. Before this release, issuing
`SELECT` against Kvrocks was a no-op — the command was accepted but had no
effect. v2.15.0 introduces the `redis-databases` option
([#3294](https://github.com/apache/kvrocks/pull/3294)) to bridge this gap and
make `SELECT` behave as it does in Redis.
+
+The option takes a numeric value:
+
+- `redis-databases 0` — default; `SELECT` remains a no-op (existing namespace
behavior is unchanged)
+- `redis-databases N` (N > 0) — enables Redis-style database switching with N
logical databases; requires that no namespaces are configured
+
+```yaml
+# kvrocks.conf
+redis-databases 16
+```
+
+Once enabled, clients can issue `SELECT` as they would against Redis:
+
+```bash
+127.0.0.1:6666> SELECT 3
+# OK
+127.0.0.1:6666[3]> SET mykey "hello"
+# OK — stored in database 3
+```
+
+### New TimeSeries Commands
+
+Kvrocks's RedisTimeSeries compatibility layer gains three commands that are
essential for production time-series pipelines. `TS.MREVRANGE` lets you query
multiple series in reverse chronological order in a single round-trip.
`TS.QUERYINDEX` filters series by label predicates without pulling data.
`TS.ALTER` modifies retention and label metadata on existing series without
recreating them.
+
+```bash
+# Create series with labels
+127.0.0.1:6666> TS.CREATE metrics:us-east:1 LABELS region us-east
+127.0.0.1:6666> TS.CREATE metrics:us-east:2 LABELS region us-east
+127.0.0.1:6666> TS.CREATE temperature:NYC LABELS sensor temperature location
NYC
+
+# Add samples
+TS.ADD metrics:us-east:1 * 42
+127.0.0.1:6666> TS.ADD metrics:us-east:2 * 87
+
+# Query the last 10 samples across all "region=us-east" series, newest first
+127.0.0.1:6666> TS.MREVRANGE - + FILTER region=us-east COUNT 10
+
+# Find series matching a label filter (no data returned)
+127.0.0.1:6666> TS.QUERYINDEX sensor=temperature location=NYC
+
+# Change retention period on an existing series
+127.0.0.1:6666> TS.ALTER temperature:NYC RETENTION 86400000
+```
+
+### New TDigest Commands
+
+The TDigest sketch — useful for approximate quantile computation over
streaming data — now supports rank-based queries. `TDIGEST.RANK` returns the
estimated rank of a value within the digest. `TDIGEST.BYRANK` returns the value
at a given rank. The `REV` variants work in descending order. Together these
four commands make it practical to answer questions like "what percentile is
this latency?" or "what is the p99 value?" directly from Kvrocks.
+
+```bash
+# Create a TDigest key
+127.0.0.1:6666> TDIGEST.CREATE latency
+
+# Insert observations
+127.0.0.1:6666> TDIGEST.ADD latency 120 95 200 340 88 150
+
+# What rank is the value 150?
+127.0.0.1:6666> TDIGEST.RANK latency 150
+
+# What value sits at rank 4?
+127.0.0.1:6666> TDIGEST.BYRANK latency 4
+
+# What value sits at rank 4 counting from the top?
+127.0.0.1:6666> TDIGEST.BYREVRANK latency 4
+```
+
+## End
+
+Except for that, this release also includes a number of bug fixes and
performance improvements. For the full list of changes, please refer to
[changelog](https://github.com/apache/kvrocks/releases/tag/v2.15.0) to see all
the details. We encourage users to upgrade to v2.15.0 to take advantage of
these new features and improvements. As always, we welcome feedback and
contributions from the community!
+
diff --git a/blog/authors.yml b/blog/authors.yml
index 12a5587a..5a122d93 100644
--- a/blog/authors.yml
+++ b/blog/authors.yml
@@ -1,6 +1,6 @@
hulk:
name: Hulk Lin
- title: Apache Kvrocks Founders
+ title: Apache Kvrocks PMC Member
url: https://github.com/git-hulk
image_url: https://github.com/git-hulk.png