redis-benchmarks-specification 0.2.8__py3-none-any.whl → 0.2.10__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.

@@ -0,0 +1,94 @@
1
+ version: 0.4
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
+
52
+
53
+ dbconfig:
54
+ configuration-parameters:
55
+ save: '""'
56
+ resources:
57
+ requests:
58
+ memory: 1g
59
+ tested-groups:
60
+ - hash
61
+ - sorted-set
62
+ - set
63
+ - scripting
64
+
65
+ tested-commands:
66
+ - incr
67
+ - expire
68
+ - eval
69
+
70
+ redis-topologies:
71
+ - oss-standalone
72
+ build-variants:
73
+ - gcc:15.2.0-amd64-debian-bookworm-default
74
+ - gcc:15.2.0-arm64-debian-bookworm-default
75
+ - dockerhub
76
+
77
+ clientconfig:
78
+ run_image: redislabs/memtier_benchmark:edge
79
+ tool: memtier_benchmark
80
+ arguments: >
81
+ --key-prefix ""
82
+ --key-minimum 1
83
+ --key-maximum 100000
84
+ --pipeline=1
85
+ --print-percentiles=50,90,95,99
86
+ --run-count=1
87
+ --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
89
+ resources:
90
+ requests:
91
+ cpus: '4'
92
+ memory: 2g
93
+
94
+ priority: 150
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.2.8
3
+ Version: 0.2.10
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
@@ -277,6 +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
281
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml,sha256=uh0J81Y27_YnQfDqzaTpYtJNvIdRFJtYsBUmXGTBrl4,2842
281
282
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership.yml,sha256=y_q6GWbodKpVA48o1a1frqF0bU52utIOnjIjuiQt0qk,2816
282
283
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml,sha256=H98DrXlq-lRhoe1M7vehfDBbUdZ7WwWroriTpklx-PI,3646
@@ -286,8 +287,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-st
286
287
  redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml,sha256=2egtIxPxCze2jlbAfgsk4v9JSQHNMoPLbDWFEW8olDg,7006
287
288
  redis_benchmarks_specification/test-suites/template.txt,sha256=ezqGiRPOvuSDO0iG7GEf-AGXNfHbgXI89_G0RUEzL88,481
288
289
  redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=PD7ow-k4Ll2BkhEC3aIqiaCZt8Hc4aJIp96Lw3J3mcI,791
289
- redis_benchmarks_specification-0.2.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
290
- redis_benchmarks_specification-0.2.8.dist-info/METADATA,sha256=8PNjMaGdQOOaCX7XLpycuX3BrU7NpB1j4xtdKZhdEao,22766
291
- redis_benchmarks_specification-0.2.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
292
- redis_benchmarks_specification-0.2.8.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
293
- redis_benchmarks_specification-0.2.8.dist-info/RECORD,,
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,,