redis-benchmarks-specification 0.2.10__py3-none-any.whl → 0.2.12__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of redis-benchmarks-specification might be problematic. Click here for more details.

@@ -126,7 +126,9 @@ def trigger_tests_dockerhub_cli_command_logic(args, project_name, project_versio
126
126
 
127
127
  if result is True:
128
128
  # Use architecture-specific stream
129
- arch_specific_stream = get_arch_specific_stream_name(args.arch)
129
+ # Provide default arch if None (defensive programming for tests)
130
+ arch = args.arch if args.arch is not None else "amd64"
131
+ arch_specific_stream = get_arch_specific_stream_name(arch)
130
132
  logging.info(
131
133
  f"CLI adding work to architecture-specific stream: {arch_specific_stream}"
132
134
  )
@@ -2449,21 +2449,6 @@ def process_self_contained_coordinator_stream(
2449
2449
  )
2450
2450
  arbitrary_command = False
2451
2451
 
2452
- if (
2453
- arbitrary_command
2454
- and oss_cluster_api_enabled
2455
- and "memtier" in benchmark_tool
2456
- ):
2457
- logging.warning(
2458
- "Forcing skip this test given there is an arbitrary commmand and memtier usage. Check https://github.com/RedisLabs/memtier_benchmark/pull/117 ."
2459
- )
2460
- delete_temporary_files(
2461
- temporary_dir_client=temporary_dir_client,
2462
- full_result_path=None,
2463
- benchmark_tool_global=benchmark_tool_global,
2464
- )
2465
- continue
2466
-
2467
2452
  # Check if we have multiple client configurations
2468
2453
  client_configs = extract_client_configs(benchmark_config)
2469
2454
  is_multiple_clients = len(client_configs) > 1
@@ -3648,12 +3633,6 @@ def data_prepopulation_step(
3648
3633
  1,
3649
3634
  unix_socket,
3650
3635
  )
3651
- if arbitrary_command is True and oss_cluster_api_enabled:
3652
- logging.warning(
3653
- "Skipping this test given it implies arbitrary command on an cluster setup. Not supported on memtier: https://github.com/RedisLabs/memtier_benchmark/pull/117"
3654
- )
3655
- result = False
3656
- return result
3657
3636
 
3658
3637
  # run the benchmark
3659
3638
  preload_start_time = datetime.datetime.now()
@@ -25,6 +25,9 @@ tested-groups:
25
25
  - string
26
26
  redis-topologies:
27
27
  - oss-standalone
28
+ - oss-standalone-08-io-threads
29
+ - oss-standalone-04-io-threads
30
+ - oss-standalone-02-io-threads
28
31
  build-variants:
29
32
  - gcc:15.2.0-amd64-debian-bookworm-default
30
33
  - gcc:15.2.0-arm64-debian-bookworm-default
@@ -1,74 +1,45 @@
1
1
  version: 0.4
2
2
  name: memtier_benchmark-playbook-rate-limiting-lua-100k-sessions
3
- description: |
4
- Runs memtier_benchmark to model API rate limiting in Redis using a strings-only Lua script that enforces a sliding window via current/previous time buckets. Each call atomically checks user, org, and global counters with GET/INCRBY/PEXPIRE/TIME, increments only on allow, and returns allow/remaining/reset.
5
-
6
- The benchmark uses a Lua script to atomically enforce quotas:
7
-
8
- local key = KEYS[1]
9
- local limit = 100
10
- local window = 60
11
- local current = redis.call("INCR", key)
12
- if current == 1 then
13
- redis.call("EXPIRE", key, window)
14
- end
15
- if current > limit then
16
- return 0
17
- else
18
- return 1
19
- end
20
-
21
- This approach ensures that **increments, expiry, and limit checks** are performed without race conditions,
22
- accurately modeling production-grade API quota enforcement.
23
-
24
- ### Workload profile
25
- - **Command tested**: `EVAL` (rate-limit script)
26
- - **Keyspace size**: 100k user-level rate-limit keys
27
- - **Access pattern**: randomized keys (`--command-key-pattern=R`) to simulate distributed users
28
- - **Response shape**: single integer (1 = allowed, 0 = denied), representing pass/fail on quota checks
29
-
30
- This benchmark measures Redis performance in **rate limiting scenarios**, where atomic counters and TTLs
31
- are critical for API protection and fairness in multi-tenant SaaS workloads.
32
-
33
- exporter:
34
- redistimeseries:
35
- break_by:
36
- - version
37
- - commit
38
- timemetric: $."ALL STATS".Runtime."Start time"
39
- metrics:
40
- - $."BEST RUN RESULTS".Totals."Ops/sec"
41
- - $."BEST RUN RESULTS".Totals."Latency"
42
- - $."BEST RUN RESULTS".Totals."Misses/sec"
43
- - $."BEST RUN RESULTS".Totals."Percentile Latencies"."p50.00"
44
- - $."BEST RUN RESULTS".Totals."Percentile Latencies"."p99.00"
45
- - $."ALL STATS".Evals."Ops/sec"
46
- - $."ALL STATS".Totals."Ops/sec"
47
- - $."ALL STATS".Totals."Latency"
48
- - $."ALL STATS".Totals."Misses/sec"
49
- - $."ALL STATS".Totals."Percentile Latencies"."p50.00"
50
- - $."ALL STATS".Totals."Percentile Latencies"."p99.00"
51
-
3
+ description: |
4
+ Runs memtier_benchmark to model a **bitmap-based rate limit gate** using Lua: the script performs
5
+ a `BITCOUNT` on a single bitmap key and **allows** if the count is below a configurable threshold,
6
+ otherwise **denies** (no other data structures or mutations are performed).
52
7
 
53
8
  dbconfig:
54
9
  configuration-parameters:
55
10
  save: '""'
11
+
12
+ init_commands:
13
+ - '"SETBIT" "1" "100000" "1"'
14
+ preload_tool:
15
+ run_image: redislabs/memtier_benchmark:edge
16
+ tool: memtier_benchmark
17
+ arguments: >
18
+ --hide-histogram
19
+ --command "SETBIT __key__ __key__ 1"
20
+ --key-maximum 100000
21
+ --key-minimum 1
22
+ --key-prefix ""
23
+ -t 1 -c 1
24
+ --command-key-pattern R
25
+ --distinct-client-seed
26
+ -n 100000
27
+ --pipeline 50
56
28
  resources:
57
29
  requests:
30
+ cpus: '2'
58
31
  memory: 1g
59
- tested-groups:
60
- - hash
61
- - sorted-set
62
- - set
63
- - scripting
64
32
 
65
33
  tested-commands:
66
- - incr
67
- - expire
34
+ - bitcount
68
35
  - eval
36
+ tested-groups:
37
+ - bitmap
38
+ - scripting
69
39
 
70
40
  redis-topologies:
71
41
  - oss-standalone
42
+
72
43
  build-variants:
73
44
  - gcc:15.2.0-amd64-debian-bookworm-default
74
45
  - gcc:15.2.0-arm64-debian-bookworm-default
@@ -78,17 +49,17 @@ clientconfig:
78
49
  run_image: redislabs/memtier_benchmark:edge
79
50
  tool: memtier_benchmark
80
51
  arguments: >
81
- --key-prefix ""
82
- --key-minimum 1
83
- --key-maximum 100000
84
- --pipeline=1
85
52
  --print-percentiles=50,90,95,99
86
53
  --run-count=1
87
54
  --test-time=120
88
- --command='EVAL "local base=ARGV[1];local limit=tonumber(ARGV[2]);local window=tonumber(ARGV[3]);local slots=tonumber(ARGV[4]);local t=redis.call(\"TIME\");local now=t[1]*1000+math.floor(t[2]/1000);local bucket=math.floor(now/window);local key=base..\":\"..tostring(bucket);local slot=math.floor(((now%window)*slots)/window);local count=redis.call(\"BITCOUNT\",key);local allowed=0;if count<limit then redis.call(\"SETBIT\",key,slot,1);allowed=1;end;redis.call(\"PEXPIRE\",key,window*2);local reset=window-(now%window);local remaining=limit-(count+allowed);if remaining<0 then remaining=0 end;return {allowed,remaining,reset}" 0 ratelimit:{user-__key__}:/api/resource 100 60000 60000' --hide-histogram
55
+ --hide-histogram
56
+ --key-maximum 100000
57
+ --key-minimum 1
58
+ --key-prefix ""
59
+ --command='EVAL "local k=KEYS[1];local limit=tonumber(ARGV[1]);local c=redis.call(\"BITCOUNT\",k);if c>=limit then return {0,0,c} else return {1,limit-c,c} end" 1 __key__ 2000000'
89
60
  resources:
90
61
  requests:
91
- cpus: '4'
62
+ cpus: '2'
92
63
  memory: 2g
93
64
 
94
- priority: 150
65
+ priority: 19
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.2.10
3
+ Version: 0.2.12
4
4
  Summary: The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute.
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
@@ -8,7 +8,7 @@ redis_benchmarks_specification/__builder__/builder.py,sha256=vG6Cp0SAAgvZt9zyjTQ
8
8
  redis_benchmarks_specification/__builder__/schema.py,sha256=1wcmyVJBcWrBvK58pghN9NCoWLCO3BzPsmdKWYfkVog,584
9
9
  redis_benchmarks_specification/__cli__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
10
10
  redis_benchmarks_specification/__cli__/args.py,sha256=y_FHtkjhRKsU532sutlXPeXgtFZu7KGOp7lTSi1C5uc,7427
11
- redis_benchmarks_specification/__cli__/cli.py,sha256=0S3Lwci-oxpPJMekPIFeG5XJiSF53rpa5sRnS-aAZnA,22416
11
+ redis_benchmarks_specification/__cli__/cli.py,sha256=NesdsV2nS-1cyblvU3A6e0tpz3Gfgw-76dpXFu2u6vU,22547
12
12
  redis_benchmarks_specification/__cli__/stats.py,sha256=r9JIfwGCSR3maozYbDZfZrkthNFQSs0xIymS86yZ6Iw,55574
13
13
  redis_benchmarks_specification/__common__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  redis_benchmarks_specification/__common__/builder_schema.py,sha256=kfDpRIk7NkJrb5qj9jzsBhLVNO7K_W2Clumj4pxrkG8,5938
@@ -26,7 +26,7 @@ redis_benchmarks_specification/__init__.py,sha256=YQIEx2sLPPA0JR9OuCuMNMNtm-f_gq
26
26
  redis_benchmarks_specification/__runner__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
27
27
  redis_benchmarks_specification/__runner__/args.py,sha256=K3VGmBC0-9lSv9H6VDp0N-6FGMWvc_4H0pG_TOXN5u8,11312
28
28
  redis_benchmarks_specification/__runner__/remote_profiling.py,sha256=R7obNQju8mmY9oKkcndjI4aAuxi84OCLhDSqqaYu1SU,18610
29
- redis_benchmarks_specification/__runner__/runner.py,sha256=RUY_O56R9TVtsJGHTQb17Sc-wax3-GlRR7z0_3q_a_c,156583
29
+ redis_benchmarks_specification/__runner__/runner.py,sha256=lWIpjThVeYW1hxR2dl2OSIeAwUXrWVHKHfQqsD9mrF8,155505
30
30
  redis_benchmarks_specification/__self_contained_coordinator__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
31
31
  redis_benchmarks_specification/__self_contained_coordinator__/args.py,sha256=2nTD4g4V1NjMRjRuDvHaoub5sjcav0GCnxv2HFiXWKc,7329
32
32
  redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py,sha256=OVHqJzDgeSSRfUSiKp1ZTAVv14PvSbk-5yJsAAoUfpw,936
@@ -163,7 +163,7 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed
163
163
  redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml,sha256=1YIVXSLRytR9-QIayu6jCxnFd1KJlY8o0rwJYT28Hx8,1549
164
164
  redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml,sha256=5C2S9LpQDH-_IpjWwYH9tCnK0jvm9pZdlnyGmJMA9gc,1300
165
165
  redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml,sha256=NE5oujnTwuHINrlvHBjMEFSKY_iwKimAvq4twnYfmXI,1297
166
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=VWLwsiTixI1WQEF1KJqPvqL0uTUUHOsi8wZ7GONn4HI,1275
166
+ redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=TjgswuCZaZrPXdzBUf79pbcMZRSMV3iWoK53mT4fIK0,1368
167
167
  redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml,sha256=h6haEl469vZSnp9LTB3wds12EwGfyNSEm1iqXxh72s8,1329
168
168
  redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml,sha256=Wg8joxF6TuCOyQbC4CpW8LTx49PpIAKvNhtwqJpX95k,1303
169
169
  redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml,sha256=I4fNkW8P-tVpkkfep8gcPeQ6BgPlZnG4EAytvtxU1hU,1498
@@ -277,7 +277,7 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed
277
277
  redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml,sha256=8M9AdpNaVBuSUm78cqKModOF_xITV_RM7RLCTyvtvaQ,825
278
278
  redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml,sha256=zeTHtpbhNGfzTXHfr9P5e62PebxUONRvTsCbXJZhsTs,721
279
279
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-leaderboard.yml,sha256=YZTgci8gAfGxTDAM-GHMn_w4hqeNoS4Yi6FYX9JyCt0,6690
280
- redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml,sha256=QRG8AGNwfdf3Icwwrdt3Z6GeRl2Aau31zkBYnR2GgIA,3507
280
+ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml,sha256=z2APnBAH_leRRYDQXjA-5gFwScNgKT4mVyBh5wLb3SU,1636
281
281
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml,sha256=uh0J81Y27_YnQfDqzaTpYtJNvIdRFJtYsBUmXGTBrl4,2842
282
282
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership.yml,sha256=y_q6GWbodKpVA48o1a1frqF0bU52utIOnjIjuiQt0qk,2816
283
283
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml,sha256=H98DrXlq-lRhoe1M7vehfDBbUdZ7WwWroriTpklx-PI,3646
@@ -287,8 +287,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-st
287
287
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml,sha256=2egtIxPxCze2jlbAfgsk4v9JSQHNMoPLbDWFEW8olDg,7006
288
288
  redis_benchmarks_specification/test-suites/template.txt,sha256=ezqGiRPOvuSDO0iG7GEf-AGXNfHbgXI89_G0RUEzL88,481
289
289
  redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=PD7ow-k4Ll2BkhEC3aIqiaCZt8Hc4aJIp96Lw3J3mcI,791
290
- redis_benchmarks_specification-0.2.10.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
291
- redis_benchmarks_specification-0.2.10.dist-info/METADATA,sha256=9qy8SQ5NPYYQq6x6TG3HUApapHjqRU_2wvdIt6lwJow,22767
292
- redis_benchmarks_specification-0.2.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
293
- redis_benchmarks_specification-0.2.10.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
294
- redis_benchmarks_specification-0.2.10.dist-info/RECORD,,
290
+ redis_benchmarks_specification-0.2.12.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
291
+ redis_benchmarks_specification-0.2.12.dist-info/METADATA,sha256=KSHkm-wxg6iKtiWTYxNEIkftjxxlfAq_SFcevK1NgvQ,22767
292
+ redis_benchmarks_specification-0.2.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
293
+ redis_benchmarks_specification-0.2.12.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
294
+ redis_benchmarks_specification-0.2.12.dist-info/RECORD,,