Skip to content

Conversation

@skaslev
Copy link
Collaborator

@skaslev skaslev commented Jul 16, 2025

Refactor use of dictGetIterator()/dictSafeGetIterator()/listGetIterator() to dictInitIterator()/dictInitSafeIterator()/listRewind() respectively which don't allocate memory.

@skaslev skaslev requested a review from sundb July 16, 2025 08:31
@snyk-io
Copy link

snyk-io bot commented Jul 16, 2025

🎉 Snyk checks have passed. No issues have been found so far.

security/snyk check is complete. No issues have been found. (View Details)

license/snyk check is complete. No issues have been found. (View Details)

@skaslev skaslev added the action:run-benchmark Triggers the benchmark suite for this Pull Request label Jul 16, 2025
@kaplanben
Copy link

kaplanben commented Jul 16, 2025

Logo
Checkmarx One – Scan Summary & Details0c6f35f9-3a9c-4393-a677-1f3761bd98a4

New Issues (1)

Checkmarx found the following issues in this Pull Request

Severity Issue Source File / Package Checkmarx Insight
MEDIUM Divide_By_Zero /modules/vector-sets/fastjson_test.c: 121
detailsThe application performs an illegal operation in generate_random_string, in /modules/vector-sets/fastjson_test.c. In line 121, the program at...
ID: qiowoZ%2FDUFf8wA3ZCvKY8M0GHks%3D
Attack Vector
Fixed Issues (1)

Great job! The following issues were fixed in this Pull Request

Severity Issue Source File / Package
LOW Use_of_Insufficiently_Random_Values /modules/vector-sets/hnsw.c: 1983

@sundb sundb requested a review from Copilot July 16, 2025 09:51
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors dictionary iteration throughout the Redis codebase to use stack-allocated iterators instead of heap-allocated ones. This optimization improves memory efficiency by replacing dictGetIterator()/dictSafeGetIterator() with dictInitIterator()/dictInitSafeIterator() and dictReleaseIterator() with dictResetIterator().

  • Replace heap-allocated dictionary iterators with stack-allocated ones
  • Update list iterator usage in redis-cli.c to use stack allocation pattern
  • Convert dictionary iteration pattern consistently across all modules

Reviewed Changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/t_zset.c Convert sorted set dictionary iteration to stack allocation
src/t_set.c Convert set dictionary iteration to stack allocation
src/t_hash.c Convert hash dictionary iteration to stack allocation
src/sort.c Convert sort operation dictionary iteration to stack allocation
src/server.c Convert server command handling dictionary iterations to stack allocation
src/sentinel.c Convert sentinel monitoring dictionary iterations to stack allocation
src/redis-cli.c Convert redis-cli dictionary and list iterations to stack allocation
src/rdb.c Convert RDB save operations dictionary iteration to stack allocation
src/pubsub.c Convert pub/sub dictionary iterations to stack allocation
src/object.c Convert object handling dictionary iterations to stack allocation
src/multi.c Convert multi/transaction dictionary iterations to stack allocation
src/module.c Convert module system dictionary iterations to stack allocation
src/latency.c Convert latency tracking dictionary iterations to stack allocation
src/functions.c Convert function system dictionary iterations to stack allocation
src/dict.h Update dictForEach macro to use stack allocation pattern
src/defrag.c Convert defragmentation dictionary iterations to stack allocation
src/debug.c Convert debug functionality dictionary iterations to stack allocation
src/db.c Convert database dictionary iterations to stack allocation
src/config.c Convert configuration dictionary iterations to stack allocation
src/cluster_legacy.c Convert legacy cluster dictionary iterations to stack allocation
src/cluster.c Convert cluster dictionary iterations to stack allocation
src/blocked.c Convert blocking operations dictionary iterations to stack allocation
src/aof.c Convert AOF operations dictionary iterations to stack allocation
src/acl.c Convert ACL system dictionary iterations to stack allocation

@sundb sundb added action:run-benchmark Triggers the benchmark suite for this Pull Request and removed action:run-benchmark Triggers the benchmark suite for this Pull Request labels Jul 18, 2025
Copy link
Collaborator

@moticless moticless left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@fcostaoliveira
Copy link
Collaborator

fcostaoliveira commented Jul 23, 2025

Automated performance analysis summary

This comment was automatically generated given there is performance data available.

In summary:

  • Detected a total of 159 stable tests between versions.
  • Detected a total of 33 improvements above the improvement water line.
    • Median/Common-Case improvement was -11.6% and ranged from [-67.0%,-5.0%].
  • Detected a total of 4 regressions bellow the regression water line 5.0.
    • Median/Common-Case regression was 6.2% and ranged from [5.1%,8.9%].

Regressions Table

Test Case Baseline redis/redis NA (median obs. +- std.dev) Comparison redis/redis NA (median obs. +- std.dev) % change (lower-better) Note
memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values 49.0 53.0 8.9% Redis latest is Better
memtier_benchmark-1Mkeys-generic-scan-pipeline-10 1.1 1.1 6.1% Redis latest is Better
memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10 106.0 113.0 6.3% Redis latest is Better
memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs 14.0 15.0 5.1% Redis latest is Better

Regressions test regexp names: memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values|memtier_benchmark-1Mkeys-generic-scan-pipeline-10|memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10|memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs

Improvements Table

Test Case Baseline redis/redis NA (median obs. +- std.dev) Comparison redis/redis NA (median obs. +- std.dev) % change (lower-better) Note
memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10 32.00 30.00 -7.2% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10 54.00 49.00 -9.1% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10 733.00 696.00 -5.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hexists 0.09 0.07 -18.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrby 1.50 0.73 -51.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrbyfloat 1.50 0.80 -47.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values 1.20 1.10 -7.6% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values 1.30 1.10 -19.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements 1.80 1.70 -8.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values 1.30 1.10 -15.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10 1.10 0.94 -14.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100 6.30 4.80 -24.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50 3.40 2.70 -20.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500 19.00 18.00 -6.2% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-decr 0.09 0.07 -18.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incr-pipeline-10 1.20 1.10 -11.6% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incrby-pipeline-10 1.30 1.20 -10.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10 1.30 1.10 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1key-1Billion-bits-bitmap-bitcount 69.00 63.00 -9.3% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10 3.60 3.20 -9.8% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer 15.00 14.00 -9.4% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string 14.00 10.00 -28.8% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lpos-string 17.00 16.00 -5.3% skaslev/iterator-init is Better
memtier_benchmark-1key-pfadd-4KB-values-pipeline-10 0.12 0.11 -6.7% skaslev/iterator-init is Better
memtier_benchmark-1key-zincrby-1M-elements-pipeline-1 0.08 0.06 -20.3% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-100K-elements-pipeline-1 0.08 0.06 -20.3% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-10M-elements-pipeline-1 0.08 0.07 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1 0.08 0.07 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10 8.40 2.80 -67.0% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10 1.30 1.20 -12.2% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements 0.28 0.26 -5.7% skaslev/iterator-init is Better
memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore 26.00 22.00 -15.6% skaslev/iterator-init is Better
memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers 1.20 1.00 -12.8% skaslev/iterator-init is Better

Improvements test regexp names: memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10|memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10|memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10|memtier_benchmark-1Mkeys-hash-hexists|memtier_benchmark-1Mkeys-hash-hincrby|memtier_benchmark-1Mkeys-hash-hincrbyfloat|memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values|memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values|memtier_benchmark-1Mkeys-load-set-intset-with-100-elements|memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values|memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10|memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100|memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50|memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500|memtier_benchmark-1Mkeys-string-decr|memtier_benchmark-1Mkeys-string-incr-pipeline-10|memtier_benchmark-1Mkeys-string-incrby-pipeline-10|memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10|memtier_benchmark-1key-1Billion-bits-bitmap-bitcount|memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10|memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer|memtier_benchmark-1key-list-10K-elements-linsert-lrem-string|memtier_benchmark-1key-list-10K-elements-lpos-string|memtier_benchmark-1key-pfadd-4KB-values-pipeline-10|memtier_benchmark-1key-zincrby-1M-elements-pipeline-1|memtier_benchmark-1key-zrank-100K-elements-pipeline-1|memtier_benchmark-1key-zrank-10M-elements-pipeline-1|memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1|memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10|memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10|memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements|memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore|memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers

Full Results table:
Test Case Baseline redis/redis NA (median obs. +- std.dev) Comparison redis/redis NA (median obs. +- std.dev) % change (lower-better) Note
memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values 0.69 0.69 -0.0%
memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30 3.20 3.40 4.0% potential Redis latest is Better
memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values 7.50 7.40 -1.3% No Change
memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values 2.80 2.80 -0.0%
memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values 3.20 3.20 0.5% No Change
memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values 49.00 53.00 8.9% Redis latest is Better
memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50 6.30 6.10 -2.0% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values 0.94 0.94 0.9% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10 4.30 4.20 -2.2% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values 0.85 0.86 1.9% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10 3.30 3.20 -2.9% No Change
memtier_benchmark-1Mkeys-10B-psetex-expire-use-case 0.38 0.37 -4.2% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-10B-setex-expire-use-case 0.38 0.38 -0.0%
memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10 0.66 0.66 -1.2% No Change
memtier_benchmark-1Mkeys-generic-exists-pipeline-10 0.61 0.61 -0.0%
memtier_benchmark-1Mkeys-generic-expire-pipeline-10 0.68 0.66 -3.5% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-expireat-pipeline-10 0.69 0.69 -1.2% No Change
memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10 0.68 0.66 -3.5% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10 32.00 30.00 -7.2% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10 54.00 49.00 -9.1% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10 733.00 696.00 -5.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10 2.10 2.00 -4.6% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-pipeline-10 1.10 1.10 6.1% Redis latest is Better
memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10 1.20 1.20 2.0% No Change
memtier_benchmark-1Mkeys-generic-touch-pipeline-10 0.63 0.62 -1.3% No Change
memtier_benchmark-1Mkeys-generic-ttl-pipeline-10 0.62 0.62 -0.0%
memtier_benchmark-1Mkeys-hash-hexists 0.09 0.07 -18.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values 0.62 0.64 2.6% No Change
memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values 0.66 0.66 -0.0%
memtier_benchmark-1Mkeys-hash-hincrby 1.50 0.73 -51.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrbyfloat 1.50 0.80 -47.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10 1.70 1.70 0.5% No Change
memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20 1.10 1.10 -2.2% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values 0.61 0.63 2.6% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values 0.61 0.62 1.3% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values 0.63 0.64 1.3% No Change
memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values 0.62 0.63 1.3% No Change
memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values 1.20 1.10 -7.6% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10 9.20 9.10 -0.7% No Change
memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values 1.30 1.10 -19.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values 0.68 0.69 1.2% No Change
memtier_benchmark-1Mkeys-load-list-with-100B-values 0.78 0.78 -0.0%
memtier_benchmark-1Mkeys-load-list-with-10B-values 0.67 0.69 2.4% No Change
memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10 2.00 1.90 -2.8% No Change
memtier_benchmark-1Mkeys-load-list-with-1KiB-values 1.10 1.20 1.4% No Change
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements 1.80 1.70 -8.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits 3.60 3.60 1.8% No Change
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10 21.00 22.00 1.8% No Change
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10 11.00 11.00 -0.0%
memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values 0.87 0.90 2.8% No Change
memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10 4.20 4.30 3.1% potential Redis latest is Better
memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values 1.30 1.10 -15.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10 6.00 6.00 1.6% No Change
memtier_benchmark-1Mkeys-load-string-with-100B-values 0.67 0.69 2.4% No Change
memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10 2.10 2.00 -1.5% No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values 0.66 0.66 1.2% No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10 1.10 0.94 -14.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100 6.30 4.80 -24.0% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50 3.40 2.70 -20.9% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500 19.00 18.00 -6.2% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-1KiB-values 0.72 0.73 2.2% No Change
memtier_benchmark-1Mkeys-load-string-with-20KiB-values 2.20 2.30 2.2% No Change
memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score 36.00 36.00 0.7% No Change
memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score 0.95 0.97 1.7% No Change
memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score 0.87 0.89 1.8% No Change
memtier_benchmark-1Mkeys-string-append-1-100B 0.65 0.65 -0.0%
memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10 1.70 1.70 -1.8% No Change
memtier_benchmark-1Mkeys-string-decr 0.09 0.07 -18.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-get-100B 0.35 0.34 -2.3% No Change
memtier_benchmark-1Mkeys-string-get-100B-pipeline-10 0.66 0.67 2.4% No Change
memtier_benchmark-1Mkeys-string-get-10B 0.35 0.34 -2.3% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-10 0.70 0.69 -1.1% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-100 3.30 3.30 -0.5% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-50 1.90 1.90 -1.7% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-500 16.00 15.00 -1.2% No Change
memtier_benchmark-1Mkeys-string-get-1KiB 0.43 0.42 -1.9% No Change
memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10 1.50 1.50 0.5% No Change
memtier_benchmark-1Mkeys-string-get-32B 0.35 0.34 -4.6% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-get-32B-pipeline-10 0.66 0.66 1.2% No Change
memtier_benchmark-1Mkeys-string-incr-pipeline-10 1.20 1.10 -11.6% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incrby 0.61 0.63 2.6% No Change
memtier_benchmark-1Mkeys-string-incrby-pipeline-10 1.30 1.20 -10.4% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incrbyfloat 0.70 0.70 -0.0%
memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10 2.60 2.60 -0.6% No Change
memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10 1.30 1.10 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-mget-1KiB 0.69 0.70 1.2% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B 0.40 0.38 -4.0% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10 1.10 1.10 -0.0%
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB 0.43 0.43 -0.0%
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10 1.80 1.80 1.3% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B 0.38 0.38 -2.1% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10 0.99 1.00 1.6% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B 0.42 0.41 -1.9% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10 1.40 1.40 0.6% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns 1.40 1.50 1.7% No Change
memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10 2.20 2.20 -0.0%
memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10 2.10 2.00 -3.5% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-setrange-100B 0.63 0.64 1.3% No Change
memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10 1.60 1.50 -2.1% No Change
memtier_benchmark-1key-100M-bits-bitmap-bitcount 6.20 6.20 -1.0% No Change
memtier_benchmark-1key-1Billion-bits-bitmap-bitcount 69.00 63.00 -9.3% skaslev/iterator-init is Better
memtier_benchmark-1key-geo-2-elements-geopos 0.79 0.81 2.0% No Change
memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord 1.10 1.10 -0.0%
memtier_benchmark-1key-hash-1K-fields-hgetall 12.00 12.00 1.6% No Change
memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10 106.00 113.00 6.3% Redis latest is Better
memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000 14.00 14.00 -0.9% No Change
memtier_benchmark-1key-hash-hscan-1K-fields-10B-values 0.85 0.86 0.9% No Change
memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100 2.50 2.50 1.9% No Change
memtier_benchmark-1key-hash-hscan-50-fields-10B-values 1.30 1.20 -1.9% No Change
memtier_benchmark-1key-list-10-elements-lrange-all-elements 0.75 0.75 -0.0%
memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10 1.80 1.70 -1.4% No Change
memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10 6.40 6.60 3.0% potential Redis latest is Better
memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10 8.60 8.80 2.2% No Change
memtier_benchmark-1key-list-100-elements-llen-pipeline-10 0.99 0.97 -1.6% No Change
memtier_benchmark-1key-list-100-elements-lrange-all-elements 1.20 1.20 -0.7% No Change
memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10 7.50 7.60 0.9% No Change
memtier_benchmark-1key-list-10K-elements-lindex-integer 0.76 0.76 -0.0%
memtier_benchmark-1key-list-10K-elements-lindex-string 0.87 0.86 -0.9% No Change
memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10 3.60 3.20 -9.8% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer 15.00 14.00 -9.4% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string 14.00 10.00 -28.8% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lpos-integer 16.00 15.00 -4.8% potential skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lpos-string 17.00 16.00 -5.3% skaslev/iterator-init is Better
memtier_benchmark-1key-list-1K-elements-lrange-all-elements 6.60 6.60 -0.5% No Change
memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10 59.00 61.00 2.2% No Change
memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs 14.00 15.00 5.1% Redis latest is Better
memtier_benchmark-1key-load-hash-1K-fields-with-5B-values 25.00 25.00 -0.5% No Change
memtier_benchmark-1key-load-zset-with-5-elements-parsing-float-score 0.70 0.73 3.4% potential Redis latest is Better
memtier_benchmark-1key-load-zset-with-5-elements-parsing-hexa-score 0.78 0.79 1.0% No Change
memtier_benchmark-1key-pfadd-4KB-values-pipeline-10 0.12 0.11 -6.7% skaslev/iterator-init is Better
memtier_benchmark-1key-set-10-elements-smembers 0.74 0.74 -0.0%
memtier_benchmark-1key-set-10-elements-smembers-pipeline-10 1.70 1.60 -3.4% potential skaslev/iterator-init is Better
memtier_benchmark-1key-set-10-elements-smismember 0.63 0.62 -1.3% No Change
memtier_benchmark-1key-set-100-elements-sismember-is-a-member 0.63 0.63 -0.0%
memtier_benchmark-1key-set-100-elements-sismember-not-a-member 0.65 0.65 -0.0%
memtier_benchmark-1key-set-100-elements-smembers 1.20 1.20 -1.3% No Change
memtier_benchmark-1key-set-100-elements-smismember 0.68 0.68 -0.0%
memtier_benchmark-1key-set-100-elements-sscan 1.30 1.30 -0.6% No Change
memtier_benchmark-1key-set-1K-elements-smembers 7.00 7.10 1.8% No Change
memtier_benchmark-1key-set-1K-elements-sscan 0.81 0.81 -0.0%
memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100 1.70 1.70 1.4% No Change
memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance 0.61 0.62 2.6% No Change
memtier_benchmark-1key-set-200K-elements-sadd-constant 0.61 0.62 1.3% No Change
memtier_benchmark-1key-set-2M-elements-sadd-increasing 0.09 0.09 -0.0%
memtier_benchmark-1key-zincrby-1M-elements-pipeline-1 0.08 0.06 -20.3% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-100K-elements-pipeline-1 0.08 0.06 -20.3% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-10M-elements-pipeline-1 0.08 0.07 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-1M-elements-pipeline-1 0.07 0.07 -0.0%
memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1 1.70 1.60 -1.5% No Change
memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10 6.60 6.60 -1.0% No Change
memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1 0.08 0.07 -10.1% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-10-elements-zrange-all-elements 1.20 1.20 0.7% No Change
memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores 0.96 0.97 1.7% No Change
memtier_benchmark-1key-zset-100-elements-zrange-all-elements 4.30 4.30 -1.5% No Change
memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements 4.30 4.30 -0.7% No Change
memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores 2.00 2.10 4.3% potential Redis latest is Better
memtier_benchmark-1key-zset-100-elements-zscan 1.80 1.70 -1.4% No Change
memtier_benchmark-1key-zset-1K-elements-zrange-all-elements 24.00 22.00 -4.9% potential skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1K-elements-zscan 1.20 1.20 -2.0% No Change
memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10 0.97 0.98 0.8% No Change
memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10 8.40 2.80 -67.0% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements 0.74 0.75 1.1% No Change
memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10 1.90 1.90 -1.7% No Change
memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10 1.30 1.20 -12.2% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements 0.28 0.26 -5.7% skaslev/iterator-init is Better
memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements 91.00 90.00 -1.7% No Change
memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1 0.71 0.71 -0.0%
memtier_benchmark-2keys-lua-eval-hset-expire 1.10 1.10 -0.0%
memtier_benchmark-2keys-lua-evalsha-hset-expire 0.94 0.95 0.8% No Change
memtier_benchmark-2keys-set-10-100-elements-sdiff 4.40 4.40 -0.0%
memtier_benchmark-2keys-set-10-100-elements-sinter 1.20 1.30 2.6% No Change
memtier_benchmark-2keys-set-10-100-elements-sunion 3.30 3.30 1.0% No Change
memtier_benchmark-2keys-stream-5-entries-xread-all-entries 1.30 1.30 -1.2% No Change
memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10 9.00 8.80 -2.1% No Change
memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion 31.00 31.00 -0.8% No Change
memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore 26.00 22.00 -15.6% skaslev/iterator-init is Better
memtier_benchmark-3Mkeys-load-string-with-512B-values 2.90 2.90 -0.0%
memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10 8.00 8.00 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns 1.90 1.90 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns 0.19 0.19 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns 37.00 37.00 -0.7% No Change
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns 7.10 7.10 0.5% No Change
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns 0.80 0.79 -1.0% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns 1.90 1.90 1.3% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns 32.00 32.00 0.4% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns 6.20 6.20 -0.5% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns 80.00 80.00 -0.6% No Change
memtier_benchmark-connection-hello 0.78 0.78 1.0% No Change
memtier_benchmark-connection-hello-pipeline-10 2.10 2.10 0.8% No Change
memtier_benchmark-nokeys-connection-ping-pipeline-10 0.88 0.88 -0.0%
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers 0.88 0.90 1.8% No Change
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers 2.50 2.60 4.5% potential Redis latest is Better
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers 7.10 6.90 -2.3% No Change
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns 6.90 7.10 2.3% No Change
memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers 1.20 1.00 -12.8% skaslev/iterator-init is Better
memtier_benchmark-nokeys-server-time-pipeline-10 0.95 0.94 -0.8% No Change

WARNING: There were 10 benchmarks with NO datapoints for both baseline and comparison.

NO datapoints for both baseline and comparison:

NO DATAPOINTS test regexp names: memtier_benchmark-150Mkeys-string-set-ex-20-pipeline-10|memtier_benchmark-1Mkeys-100B-expire-use-case|memtier_benchmark-1Mkeys-10B-expire-use-case|memtier_benchmark-1Mkeys-1KiB-expire-use-case|memtier_benchmark-1Mkeys-4KiB-expire-use-case|memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance|memtier_benchmark-1key-set-10M-elements-srem-50pct-chance|memtier_benchmark-1key-zrem-5M-elements-pipeline-1|memtier_benchmark-50Mkeys-string-set-ex-10years-pipeline-10|memtier_benchmark-50Mkeys-string-set-ex-3-pipeline-10

@fcostaoliveira
Copy link
Collaborator

fcostaoliveira commented Jul 23, 2025

@skaslev from the above data #14200 (comment), i'll trigger 2 extra runs for:

  • regression list
  • improvement list

to be sure all data is solid.

@fcostaoliveira
Copy link
Collaborator

fcostaoliveira commented Jul 23, 2025

Automated performance analysis summary

This comment was automatically generated given there is performance data available.

In summary:

  • Detected a total of 177 stable tests between versions.
  • Detected a total of 10 improvements above the improvement water line.
    • Median/Common-Case improvement was -25.9% and ranged from [-49.9%,-10.1%].

Improvements Table

Test Case Baseline redis/redis NA (median obs. +- std.dev) Comparison redis/redis NA (median obs. +- std.dev) % change (lower-better) Note
memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values 68 +- 18.6% UNSTABLE (5 datapoints) 50 +- 22.8% UNSTABLE (4 datapoints) -26.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10 46 +- 13.5% UNSTABLE (5 datapoints) 32 +- 3.7% (3 datapoints) -30.7% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hexists 0.08 +- 11.7% UNSTABLE (4 datapoints) 0.07 +- 0.0% (3 datapoints) -10.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrby 1.1 +- 40.9% UNSTABLE (4 datapoints) 0.73 +- 0.6% (3 datapoints) -35.0% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrbyfloat 1.2 +- 36.5% UNSTABLE (4 datapoints) 0.81 +- 0.6% (3 datapoints) -30.4% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-decr 0.08 +- 11.7% UNSTABLE (4 datapoints) 0.07 +- 0.0% (2 datapoints) -10.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string 14 +- 4.1% (4 datapoints) 10 +- 0.9% (2 datapoints) -25.7% skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-100K-elements-pipeline-1 0.08 +- 20.9% UNSTABLE (4 datapoints) 0.07 +- 8.4% (2 datapoints) -15.2% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10 5.6 +- 57.9% UNSTABLE (4 datapoints) 2.8 +- 0.8% (2 datapoints) -49.9% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers 1.2 +- 0.8% (4 datapoints) 1.0 +- 0.0% (2 datapoints) -13.3% skaslev/iterator-init is Better

Improvements test regexp names: memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values|memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10|memtier_benchmark-1Mkeys-hash-hexists|memtier_benchmark-1Mkeys-hash-hincrby|memtier_benchmark-1Mkeys-hash-hincrbyfloat|memtier_benchmark-1Mkeys-string-decr|memtier_benchmark-1key-list-10K-elements-linsert-lrem-string|memtier_benchmark-1key-zrank-100K-elements-pipeline-1|memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10|memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers

Full Results table:
Test Case Baseline redis/redis NA (median obs. +- std.dev) Comparison redis/redis NA (median obs. +- std.dev) % change (lower-better) Note
memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values 0.69 +- 0.0% (2 datapoints) 0.69 -0.0%
memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30 3.2 +- 0.0% (2 datapoints) 3.40 4.0% potential Redis latest is Better
memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values 7.5 +- 0.6% (2 datapoints) 7.40 -0.9% No Change
memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values 2.8 +- 1.2% (2 datapoints) 2.80 0.9% No Change
memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values 3.3 +- 2.7% (2 datapoints) 3.20 -1.5% No Change
memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values 68 +- 18.6% UNSTABLE (5 datapoints) 50 +- 22.8% UNSTABLE (4 datapoints) -26.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50 6.3 +- 0.4% (2 datapoints) 6.10 -1.8% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values 0.94 +- 1.2% (2 datapoints) 0.94 -0.0% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10 4.3 +- 0.5% (2 datapoints) 4.20 -1.9% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values 0.85 +- 0.7% (2 datapoints) 0.86 1.4% No Change
memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10 3.3 +- 0.0% (2 datapoints) 3.20 -2.9% No Change
memtier_benchmark-1Mkeys-10B-psetex-expire-use-case 0.38 +- 0.0% (2 datapoints) 0.37 -4.2% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-10B-setex-expire-use-case 0.38 +- 1.5% (2 datapoints) 0.38 -1.1% No Change
memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10 0.66 +- 1.7% (2 datapoints) 0.66 -0.0%
memtier_benchmark-1Mkeys-generic-exists-pipeline-10 0.61 +- 0.9% (2 datapoints) 0.61 0.7% No Change
memtier_benchmark-1Mkeys-generic-expire-pipeline-10 0.68 +- 0.8% (2 datapoints) 0.66 -3.0% No Change
memtier_benchmark-1Mkeys-generic-expireat-pipeline-10 0.69 +- 0.8% (2 datapoints) 0.69 -0.6% No Change
memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10 0.68 +- 0.8% (2 datapoints) 0.66 -4.1% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10 46 +- 13.5% UNSTABLE (5 datapoints) 32 +- 3.7% (3 datapoints) -30.7% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10 52 +- 2.8% (2 datapoints) 49 -7.3% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10 733 +- 0.0% (2 datapoints) 696 -5.0% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10 2.1 +- 0.5% (2 datapoints) 2 -4.9% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-pipeline-10 1.2 +- 6.5% (5 datapoints) 1.1 +- 0.7% (4 datapoints) -5.7% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10 1.2 +- 0.0% (2 datapoints) 1.20 2.0% No Change
memtier_benchmark-1Mkeys-generic-touch-pipeline-10 0.63 +- 0.0% (2 datapoints) 0.62 -1.3% No Change
memtier_benchmark-1Mkeys-generic-ttl-pipeline-10 0.63 +- 0.9% (2 datapoints) 0.62 -0.6% No Change
memtier_benchmark-1Mkeys-hash-hexists 0.08 +- 11.7% UNSTABLE (4 datapoints) 0.07 +- 0.0% (3 datapoints) -10.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values 0.62 +- 0.0% (2 datapoints) 0.64 2.6% No Change
memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values 0.67 +- 0.8% (2 datapoints) 0.66 -0.6% No Change
memtier_benchmark-1Mkeys-hash-hincrby 1.1 +- 40.9% UNSTABLE (4 datapoints) 0.73 +- 0.6% (3 datapoints) -35.0% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hincrbyfloat 1.2 +- 36.5% UNSTABLE (4 datapoints) 0.81 +- 0.6% (3 datapoints) -30.4% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10 1.7 +- 0.3% (2 datapoints) 1.70 0.2% No Change
memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20 1.1 +- 0.0% (2 datapoints) 1.10 -2.2% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values 0.62 +- 0.9% (2 datapoints) 0.63 1.9% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values 0.61 +- 0.0% (2 datapoints) 0.62 1.3% No Change
memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values 0.63 +- 0.0% (2 datapoints) 0.64 1.3% No Change
memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values 0.62 +- 0.9% (2 datapoints) 0.63 1.9% No Change
memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values 1.1 +- 10.2% UNSTABLE (4 datapoints) 1.1 +- 1.1% (3 datapoints) -3.2% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10 9.1 +- 0.9% (4 datapoints) 9.1 +- 1.2% (3 datapoints) -0.4% No Change
memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values 1.2 +- 11.2% UNSTABLE (4 datapoints) 1.1 +- 1.1% (3 datapoints) -8.8% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values 0.68 +- 0.0% (2 datapoints) 0.69 1.2% No Change
memtier_benchmark-1Mkeys-load-list-with-100B-values 0.77 +- 0.7% (2 datapoints) 0.78 0.5% No Change
memtier_benchmark-1Mkeys-load-list-with-10B-values 0.68 +- 0.8% (2 datapoints) 0.69 1.8% No Change
memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10 2.0 +- 0.6% (2 datapoints) 1.90 -3.2% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-list-with-1KiB-values 1.1 +- 0.5% (2 datapoints) 1.20 1.8% No Change
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements 1.8 +- 0.6% (2 datapoints) 1.70 -7.6% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits 3.5 +- 3.9% (2 datapoints) 3.60 4.6% potential Redis latest is Better
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10 21 +- 0.4% (2 datapoints) 22 2.1% No Change
memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10 11 +- 0.0% (2 datapoints) 11 -0.0%
memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values 0.88 +- 0.6% (2 datapoints) 0.90 2.3% No Change
memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10 4.1 +- 2.5% (2 datapoints) 4.30 4.9% potential Redis latest is Better
memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values 1.2 +- 9.2% (4 datapoints) 1.1 +- 0.5% (2 datapoints) -8.0% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10 6.0 +- 0.9% (4 datapoints) 6.1 +- 0.7% (2 datapoints) 2.2% No Change
memtier_benchmark-1Mkeys-load-string-with-100B-values 0.67 +- 0.0% (2 datapoints) 0.69 2.4% No Change
memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10 2.1 +- 0.5% (2 datapoints) 2 -1.2% No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values 0.66 +- 0.9% (2 datapoints) 0.66 0.6% No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10 0.95 +- 8.1% (4 datapoints) 0.94 -1.7% No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100 4.9 +- 14.1% UNSTABLE (4 datapoints) 4.80 -2.6% UNSTABLE (very high variance) No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50 2.7 +- 12.3% UNSTABLE (4 datapoints) 2.70 -1.5% UNSTABLE (very high variance) No Change
memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500 19 +- 24.8% UNSTABLE (4 datapoints) 18 -6.2% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-load-string-with-1KiB-values 0.72 +- 0.8% (2 datapoints) 0.73 1.7% No Change
memtier_benchmark-1Mkeys-load-string-with-20KiB-values 2.2 +- 0.5% (2 datapoints) 2.30 1.8% No Change
memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score 36 +- 0.0% (2 datapoints) 36 0.7% No Change
memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score 0.95 +- 0.6% (2 datapoints) 0.97 1.3% No Change
memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score 0.87 +- 0.0% (2 datapoints) 0.89 1.8% No Change
memtier_benchmark-1Mkeys-string-append-1-100B 0.64 +- 0.9% (2 datapoints) 0.65 0.6% No Change
memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10 1.7 +- 0.3% (2 datapoints) 1.70 -2.1% No Change
memtier_benchmark-1Mkeys-string-decr 0.08 +- 11.7% UNSTABLE (4 datapoints) 0.07 +- 0.0% (2 datapoints) -10.1% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-get-100B 0.35 +- 0.0% (2 datapoints) 0.34 -2.3% No Change
memtier_benchmark-1Mkeys-string-get-100B-pipeline-10 0.65 +- 0.9% (2 datapoints) 0.67 3.1% potential Redis latest is Better
memtier_benchmark-1Mkeys-string-get-10B 0.35 +- 0.0% (2 datapoints) 0.34 -2.3% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-10 0.70 +- 0.0% (2 datapoints) 0.69 -1.1% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-100 3.3 +- 0.3% (2 datapoints) 3.30 -0.2% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-50 1.9 +- 0.9% (2 datapoints) 1.90 -1.1% No Change
memtier_benchmark-1Mkeys-string-get-10B-pipeline-500 16 +- 0.3% (2 datapoints) 15 -1.0% No Change
memtier_benchmark-1Mkeys-string-get-1KiB 0.43 +- 0.0% (2 datapoints) 0.42 -1.9% No Change
memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10 1.5 +- 0.8% (2 datapoints) 1.50 1.1% No Change
memtier_benchmark-1Mkeys-string-get-32B 0.35 +- 0.0% (2 datapoints) 0.34 -4.6% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-get-32B-pipeline-10 0.65 +- 0.9% (2 datapoints) 0.66 1.8% No Change
memtier_benchmark-1Mkeys-string-incr-pipeline-10 1.2 +- 7.0% (4 datapoints) 1.1 +- 0.0% (2 datapoints) -5.8% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incrby 0.62 +- 0.9% (2 datapoints) 0.63 1.9% No Change
memtier_benchmark-1Mkeys-string-incrby-pipeline-10 1.2 +- 7.7% (4 datapoints) 1.2 +- 1.0% (2 datapoints) -5.5% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-incrbyfloat 0.70 +- 0.8% (2 datapoints) 0.70 0.6% No Change
memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10 2.6 +- 1.3% (2 datapoints) 2.60 0.3% No Change
memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10 1.2 +- 5.1% (2 datapoints) 1.10 -6.9% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-mget-1KiB 0.70 +- 1.6% (2 datapoints) 0.70 -0.0%
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B 0.40 +- 0.0% (2 datapoints) 0.38 -4.0% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10 1.1 +- 1.5% (2 datapoints) 1.10 1.1% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB 0.43 +- 1.3% (2 datapoints) 0.43 -0.9% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10 1.8 +- 0.6% (2 datapoints) 1.80 1.8% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B 0.39 +- 1.5% (2 datapoints) 0.38 -3.1% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10 0.99 +- 0.6% (2 datapoints) 1 2.0% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B 0.42 +- 0.0% (2 datapoints) 0.41 -1.9% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10 1.4 +- 2.4% (2 datapoints) 1.40 2.3% No Change
memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns 1.4 +- 0.0% (2 datapoints) 1.50 1.7% No Change
memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10 2.2 +- 1.0% (2 datapoints) 2.20 0.7% No Change
memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10 2.1 +- 0.0% (2 datapoints) 2 -3.5% potential skaslev/iterator-init is Better
memtier_benchmark-1Mkeys-string-setrange-100B 0.63 +- 0.0% (2 datapoints) 0.64 1.3% No Change
memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10 1.6 +- 0.4% (2 datapoints) 1.50 -2.3% No Change
memtier_benchmark-1key-100M-bits-bitmap-bitcount 6.2 +- 0.0% (2 datapoints) 6.20 -1.0% No Change
memtier_benchmark-1key-1Billion-bits-bitmap-bitcount 69 +- 1.1% (2 datapoints) 63 -8.6% potential skaslev/iterator-init is Better
memtier_benchmark-1key-geo-2-elements-geopos 0.79 +- 0.7% (2 datapoints) 0.81 2.5% No Change
memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord 1.1 +- 0.5% (2 datapoints) 1.10 0.4% No Change
memtier_benchmark-1key-hash-1K-fields-hgetall 12 +- 0.4% (2 datapoints) 12 1.9% No Change
memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10 113 +- 4.0% (5 datapoints) 113 +- 0.3% (4 datapoints) -0.2% No Change
memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000 14 +- 0.0% (2 datapoints) 14 -0.9% No Change
memtier_benchmark-1key-hash-hscan-1K-fields-10B-values 0.85 +- 0.7% (2 datapoints) 0.86 1.4% No Change
memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100 2.5 +- 0.5% (2 datapoints) 2.50 1.6% No Change
memtier_benchmark-1key-hash-hscan-50-fields-10B-values 1.3 +- 0.5% (2 datapoints) 1.20 -1.6% No Change
memtier_benchmark-1key-list-10-elements-lrange-all-elements 0.75 +- 0.0% (2 datapoints) 0.75 -0.0%
memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10 1.7 +- 0.6% (2 datapoints) 1.70 -0.9% No Change
memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10 6.4 +- 0.4% (2 datapoints) 6.60 2.7% No Change
memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10 8.7 +- 0.5% (2 datapoints) 8.80 1.8% No Change
memtier_benchmark-1key-list-100-elements-llen-pipeline-10 0.98 +- 1.2% (2 datapoints) 0.97 -0.8% No Change
memtier_benchmark-1key-list-100-elements-lrange-all-elements 1.2 +- 0.0% (2 datapoints) 1.20 -0.7% No Change
memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10 7.5 +- 0.3% (2 datapoints) 7.60 0.6% No Change
memtier_benchmark-1key-list-10K-elements-lindex-integer 0.76 +- 0.7% (2 datapoints) 0.76 -0.5% No Change
memtier_benchmark-1key-list-10K-elements-lindex-string 0.87 +- 0.0% (2 datapoints) 0.86 -0.9% No Change
memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10 3.6 +- 0.3% (2 datapoints) 3.20 -9.6% potential skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer 15 +- 2.8% (4 datapoints) 14 +- 0.7% (2 datapoints) -7.6% potential skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string 14 +- 4.1% (4 datapoints) 10 +- 0.9% (2 datapoints) -25.7% skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lpos-integer 16 +- 2.2% (2 datapoints) 15 -6.3% potential skaslev/iterator-init is Better
memtier_benchmark-1key-list-10K-elements-lpos-string 17 +- 1.1% (2 datapoints) 16 -6.1% potential skaslev/iterator-init is Better
memtier_benchmark-1key-list-1K-elements-lrange-all-elements 6.6 +- 0.3% (2 datapoints) 6.60 -0.2% No Change
memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10 60 +- 1.2% (2 datapoints) 61 1.3% No Change
memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs 14 +- 1.2% (5 datapoints) 15 +- 0.0% (4 datapoints) 1.8% No Change
memtier_benchmark-1key-load-hash-1K-fields-with-5B-values 25 +- 0.0% (2 datapoints) 25 -0.5% No Change
memtier_benchmark-1key-load-zset-with-5-elements-parsing-float-score 0.71 +- 1.6% (2 datapoints) 0.73 2.3% No Change
memtier_benchmark-1key-load-zset-with-5-elements-parsing-hexa-score 0.78 +- 0.0% (2 datapoints) 0.79 1.0% No Change
memtier_benchmark-1key-pfadd-4KB-values-pipeline-10 0.12 +- 14.0% UNSTABLE (3 datapoints) 0.11 -6.7% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1key-set-10-elements-smembers 0.74 +- 0.0% (2 datapoints) 0.74 -0.0%
memtier_benchmark-1key-set-10-elements-smembers-pipeline-10 1.7 +- 1.0% (2 datapoints) 1.60 -4.1% potential skaslev/iterator-init is Better
memtier_benchmark-1key-set-10-elements-smismember 0.63 +- 0.0% (2 datapoints) 0.62 -1.3% No Change
memtier_benchmark-1key-set-100-elements-sismember-is-a-member 0.64 +- 0.9% (2 datapoints) 0.63 -0.6% No Change
memtier_benchmark-1key-set-100-elements-sismember-not-a-member 0.64 +- 0.9% (2 datapoints) 0.65 0.6% No Change
memtier_benchmark-1key-set-100-elements-smembers 1.2 +- 0.0% (2 datapoints) 1.20 -1.3% No Change
memtier_benchmark-1key-set-100-elements-smismember 0.68 +- 0.0% (2 datapoints) 0.68 -0.0%
memtier_benchmark-1key-set-100-elements-sscan 1.3 +- 0.4% (2 datapoints) 1.30 -0.3% No Change
memtier_benchmark-1key-set-1K-elements-smembers 7.0 +- 0.3% (2 datapoints) 7.10 2.1% No Change
memtier_benchmark-1key-set-1K-elements-sscan 0.80 +- 0.7% (2 datapoints) 0.81 0.5% No Change
memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100 1.7 +- 0.3% (2 datapoints) 1.70 1.6% No Change
memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance 0.61 +- 1.8% (2 datapoints) 0.62 1.3% No Change
memtier_benchmark-1key-set-200K-elements-sadd-constant 0.61 +- 0.0% (2 datapoints) 0.62 1.3% No Change
memtier_benchmark-1key-set-2M-elements-sadd-increasing 0.09 +- 0.0% (2 datapoints) 0.09 -0.0%
memtier_benchmark-1key-zincrby-1M-elements-pipeline-1 0.07 +- 13.0% UNSTABLE (4 datapoints) 0.07 +- 8.4% (2 datapoints) -5.6% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-100K-elements-pipeline-1 0.08 +- 20.9% UNSTABLE (4 datapoints) 0.07 +- 8.4% (2 datapoints) -15.2% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-10M-elements-pipeline-1 0.07 +- 10.2% UNSTABLE (4 datapoints) 0.07 +- 0.0% (2 datapoints) -5.3% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1key-zrank-1M-elements-pipeline-1 0.07 +- 7.5% (2 datapoints) 0.07 -5.3% potential skaslev/iterator-init is Better
memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1 1.7 +- 0.0% (2 datapoints) 1.60 -1.5% No Change
memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10 6.5 +- 3.1% (2 datapoints) 6.60 1.2% No Change
memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1 0.07 +- 13.0% UNSTABLE (4 datapoints) 0.07 +- 8.4% (2 datapoints) -5.6% UNSTABLE (very high variance) potential skaslev/iterator-init is Better
memtier_benchmark-1key-zset-10-elements-zrange-all-elements 1.1 +- 0.5% (2 datapoints) 1.20 1.0% No Change
memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores 0.96 +- 0.6% (2 datapoints) 0.97 1.2% No Change
memtier_benchmark-1key-zset-100-elements-zrange-all-elements 4.3 +- 0.0% (2 datapoints) 4.30 -1.5% No Change
memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements 4.3 +- 0.0% (2 datapoints) 4.30 -0.7% No Change
memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores 2.1 +- 0.8% (2 datapoints) 2.10 3.7% potential Redis latest is Better
memtier_benchmark-1key-zset-100-elements-zscan 1.8 +- 0.3% (2 datapoints) 1.70 -1.6% No Change
memtier_benchmark-1key-zset-1K-elements-zrange-all-elements 23 +- 0.4% (2 datapoints) 22 -4.6% potential skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1K-elements-zscan 1.2 +- 0.5% (2 datapoints) 1.20 -2.3% No Change
memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10 0.98 +- 1.2% (2 datapoints) 0.98 -0.0%
memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10 5.6 +- 57.9% UNSTABLE (4 datapoints) 2.8 +- 0.8% (2 datapoints) -49.9% UNSTABLE (very high variance) skaslev/iterator-init is Better
memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements 0.74 +- 0.0% (2 datapoints) 0.75 1.1% No Change
memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10 1.9 +- 0.6% (2 datapoints) 1.90 -2.1% No Change
memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10 1.2 +- 5.9% (4 datapoints) 1.1 +- 1.0% (2 datapoints) -7.4% potential skaslev/iterator-init is Better
memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements 0.28 +- 0.0% (2 datapoints) 0.26 -5.7% potential skaslev/iterator-init is Better
memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements 91 +- 0.0% (2 datapoints) 90 -1.7% No Change
memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1 0.71 +- 0.0% (2 datapoints) 0.71 -0.0%
memtier_benchmark-2keys-lua-eval-hset-expire 1.1 +- 0.5% (2 datapoints) 1.10 0.4% No Change
memtier_benchmark-2keys-lua-evalsha-hset-expire 0.94 +- 0.0% (2 datapoints) 0.95 0.8% No Change
memtier_benchmark-2keys-set-10-100-elements-sdiff 4.5 +- 1.5% (2 datapoints) 4.40 -1.1% No Change
memtier_benchmark-2keys-set-10-100-elements-sinter 1.2 +- 0.5% (2 datapoints) 1.30 2.3% No Change
memtier_benchmark-2keys-set-10-100-elements-sunion 3.3 +- 0.0% (2 datapoints) 3.30 1.0% No Change
memtier_benchmark-2keys-stream-5-entries-xread-all-entries 1.3 +- 0.0% (2 datapoints) 1.30 -1.2% No Change
memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10 8.9 +- 0.5% (2 datapoints) 8.80 -1.8% No Change
memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion 31 +- 0.0% (2 datapoints) 31 -0.8% No Change
memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore 24 +- 9.8% (4 datapoints) 22 +- 1.6% (2 datapoints) -7.7% potential skaslev/iterator-init is Better
memtier_benchmark-3Mkeys-load-string-with-512B-values 2.9 +- 0.4% (2 datapoints) 2.90 0.3% No Change
memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10 8.0 +- 0.9% (2 datapoints) 8 0.6% No Change
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns 1.9 +- 0.0% (2 datapoints) 1.90 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns 0.19 +- 0.0% (2 datapoints) 0.19 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns 37 +- 1.0% (2 datapoints) 37 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns 7.1 +- 0.6% (2 datapoints) 7.10 -0.0%
memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns 0.80 +- 0.7% (2 datapoints) 0.79 -0.5% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns 1.9 +- 0.0% (2 datapoints) 1.90 1.3% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns 32 +- 0.0% (2 datapoints) 32 0.4% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns 6.2 +- 1.1% (2 datapoints) 6.20 0.3% No Change
memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns 80 +- 0.0% (2 datapoints) 80 -0.6% No Change
memtier_benchmark-connection-hello 0.78 +- 0.0% (2 datapoints) 0.78 1.0% No Change
memtier_benchmark-connection-hello-pipeline-10 2.1 +- 0.5% (2 datapoints) 2.10 1.1% No Change
memtier_benchmark-nokeys-connection-ping-pipeline-10 0.88 +- 0.0% (2 datapoints) 0.88 -0.0%
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers 0.89 +- 1.3% (2 datapoints) 0.90 0.9% No Change
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers 2.5 +- 0.5% (2 datapoints) 2.60 4.8% potential Redis latest is Better
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers 6.9 +- 3.6% (2 datapoints) 6.90 0.2% No Change
memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns 6.8 +- 2.7% (2 datapoints) 7.10 4.2% potential Redis latest is Better
memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers 1.2 +- 0.8% (4 datapoints) 1.0 +- 0.0% (2 datapoints) -13.3% skaslev/iterator-init is Better
memtier_benchmark-nokeys-server-time-pipeline-10 0.95 +- 0.6% (2 datapoints) 0.94 -1.3% No Change

@fcostaoliveira
Copy link
Collaborator

@skaslev i've manually confirmed by picking one of the benchmarks that the results are indeed easy to reproduce/see outside of automation, from 13ms to 10ms p50:

Results for unstable f6f1674

Test Name Metric JSON Path Metric Value
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string "ALL STATS".Totals."Ops/sec" 15677.430
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string "ALL STATS".Totals."Percentile Latencies"."p50.00" 13.183

Results for skaslev/iterator-init ded5aa3

Test Name Metric JSON Path Metric Value
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string "ALL STATS".Totals."Ops/sec" 16067.970
memtier_benchmark-1key-list-10K-elements-linsert-lrem-string "ALL STATS".Totals."Percentile Latencies"."p50.00" 10.239

@skaslev skaslev merged commit 7df3414 into redis:unstable Jul 24, 2025
19 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in Redis 8.2 Jul 24, 2025
@sundb sundb mentioned this pull request Aug 4, 2025
sundb added a commit that referenced this pull request Aug 4, 2025
This is the General Availability release of Redis Open Source 8.2.

### Major changes compared to 8.0

- Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD`
and `XTRIM`
- Bitmap - `BITOP`: new operators: `DIFF`, `DIFF1`, `ANDOR`, and `ONE`
- Query Engine - new SVS-VAMANA vector index type which supports vector
compression
- More than 15 performance and resource utilization improvements
- New metrics: per-slot usage metrics, key size distributions for basic
data types, and more

### Binary distributions

- Alpine and Debian Docker images - https://hub.docker.com/_/redis
- Install using snap - see https://github.com/redis/redis-snap
- Install using brew - see https://github.com/redis/homebrew-redis
- Install using RPM - see https://github.com/redis/redis-rpm
- Install using Debian APT - see https://github.com/redis/redis-debian


### Operating systems we test Redis 8.2 on

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5
- AlmaLinux 8.10, 9.5
- Debian 12 (Bookworm)
- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia)

### Security fixes (compared to 8.2-RC1)

- (CVE-2025-32023) Fix out-of-bounds write in `HyperLogLog` commands
- (CVE-2025-48367) Retry accepting other connections even if the
accepted connection reports an error

### New Features (compared to 8.2-RC1)

- #14141 Keyspace notifications - new event types:
  - `OVERWRITTEN` - the value of a key is completely overwritten
  - `TYPE_CHANGED` - key type change

### Bug fixes (compared to 8.2-RC1)

- #14162 Crash when using evport with I/O threads
- #14163 `EVAL` crash when error table is empty
- #14144 Vector sets - RDB format is not compatible with big endian
machines
- #14165 Endless client blocking for blocking commands
- #14164 Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`
- #14216 TTL was not removed by the `SET` command
- #14224 `HINCRBYFLOAT` removes field expiration on replica

### Performance and resource utilization improvements (compared to
8.2-RC1)

- #14200 Store iterators on stack instead of on heap
- #14144 Vector set - improve RDB loading / RESTORE speed by storing the
worst link info
- #Q6430 More compression variants for the SVS-VAMANA vector index
- #Q6535 `SHARD_K_RATIO` parameter - favor network latency over accuracy
for KNN vector query in a Redis cluster (unstable feature) (MOD-10359)

### Modules API

- #14051 `RedisModule_Get*`, `RedisModule_Set*` - allow modules to
access Redis configurations
- #14114 `RM_UnsubscribeFromKeyspaceEvents` - unregister a module from
specific keyspace notifications
@skaslev skaslev deleted the iterator-init branch November 10, 2025 15:40
skaslev added a commit that referenced this pull request Nov 21, 2025
…#14473)

The PR is follow up on #14200 where we prefer storing iterators on the stack
rather than allocating on the heap. Here we continue this for iterators over
hashes, lists, sets and kvstores.

Quicklist's iterators are still using heap allocation and will be addressed
soon. The reason is that `NULL` is perfectly valid quicklist iterator value and
handling this would be better reviewed separately from the mostly mechanical
changes here.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action:run-benchmark Triggers the benchmark suite for this Pull Request

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants