redis-benchmarks-specification 0.2.7__py3-none-any.whl → 0.2.9__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.
- redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml +98 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml +55 -0
- {redis_benchmarks_specification-0.2.7.dist-info → redis_benchmarks_specification-0.2.9.dist-info}/METADATA +1 -1
- {redis_benchmarks_specification-0.2.7.dist-info → redis_benchmarks_specification-0.2.9.dist-info}/RECORD +7 -5
- {redis_benchmarks_specification-0.2.7.dist-info → redis_benchmarks_specification-0.2.9.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.2.7.dist-info → redis_benchmarks_specification-0.2.9.dist-info}/WHEEL +0 -0
- {redis_benchmarks_specification-0.2.7.dist-info → redis_benchmarks_specification-0.2.9.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
version: 0.4
|
|
2
|
+
name: memtier_benchmark-playbook-rate-limiting-lua-100k-sessions
|
|
3
|
+
description: |
|
|
4
|
+
Runs memtier_benchmark to simulate **API rate limiting** using Redis with an atomic Lua script.
|
|
5
|
+
Each user has a dedicated key in the form `ratelimit:user-<id>:/api/resource`, which tracks
|
|
6
|
+
request counts under a **fixed time window** (e.g., 100 requests per 60 seconds).
|
|
7
|
+
|
|
8
|
+
The benchmark uses a Lua script to atomically enforce quotas:
|
|
9
|
+
|
|
10
|
+
local key = KEYS[1]
|
|
11
|
+
local limit = 100
|
|
12
|
+
local window = 60
|
|
13
|
+
local current = redis.call("INCR", key)
|
|
14
|
+
if current == 1 then
|
|
15
|
+
redis.call("EXPIRE", key, window)
|
|
16
|
+
end
|
|
17
|
+
if current > limit then
|
|
18
|
+
return 0
|
|
19
|
+
else
|
|
20
|
+
return 1
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
This approach ensures that **increments, expiry, and limit checks** are performed without race conditions,
|
|
24
|
+
accurately modeling production-grade API quota enforcement.
|
|
25
|
+
|
|
26
|
+
### Workload profile
|
|
27
|
+
- **Command tested**: `EVAL` (rate-limit script)
|
|
28
|
+
- **Keyspace size**: 100k user-level rate-limit keys
|
|
29
|
+
- **Access pattern**: randomized keys (`--command-key-pattern=R`) to simulate distributed users
|
|
30
|
+
- **Response shape**: single integer (1 = allowed, 0 = denied), representing pass/fail on quota checks
|
|
31
|
+
|
|
32
|
+
This benchmark measures Redis performance in **rate limiting scenarios**, where atomic counters and TTLs
|
|
33
|
+
are critical for API protection and fairness in multi-tenant SaaS workloads.
|
|
34
|
+
|
|
35
|
+
exporter:
|
|
36
|
+
redistimeseries:
|
|
37
|
+
break_by:
|
|
38
|
+
- version
|
|
39
|
+
- commit
|
|
40
|
+
timemetric: $."ALL STATS".Runtime."Start time"
|
|
41
|
+
metrics:
|
|
42
|
+
- $."BEST RUN RESULTS".Totals."Ops/sec"
|
|
43
|
+
- $."BEST RUN RESULTS".Totals."Latency"
|
|
44
|
+
- $."BEST RUN RESULTS".Totals."Misses/sec"
|
|
45
|
+
- $."BEST RUN RESULTS".Totals."Percentile Latencies"."p50.00"
|
|
46
|
+
- $."BEST RUN RESULTS".Totals."Percentile Latencies"."p99.00"
|
|
47
|
+
- $."ALL STATS".Evals."Ops/sec"
|
|
48
|
+
- $."ALL STATS".Totals."Ops/sec"
|
|
49
|
+
- $."ALL STATS".Totals."Latency"
|
|
50
|
+
- $."ALL STATS".Totals."Misses/sec"
|
|
51
|
+
- $."ALL STATS".Totals."Percentile Latencies"."p50.00"
|
|
52
|
+
- $."ALL STATS".Totals."Percentile Latencies"."p99.00"
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
dbconfig:
|
|
56
|
+
configuration-parameters:
|
|
57
|
+
save: '""'
|
|
58
|
+
resources:
|
|
59
|
+
requests:
|
|
60
|
+
memory: 1g
|
|
61
|
+
tested-groups:
|
|
62
|
+
- hash
|
|
63
|
+
- sorted-set
|
|
64
|
+
- set
|
|
65
|
+
- scripting
|
|
66
|
+
|
|
67
|
+
tested-commands:
|
|
68
|
+
- incr
|
|
69
|
+
- expire
|
|
70
|
+
- eval
|
|
71
|
+
|
|
72
|
+
redis-topologies:
|
|
73
|
+
- oss-standalone
|
|
74
|
+
build-variants:
|
|
75
|
+
- gcc:15.2.0-amd64-debian-bookworm-default
|
|
76
|
+
- gcc:15.2.0-arm64-debian-bookworm-default
|
|
77
|
+
- dockerhub
|
|
78
|
+
|
|
79
|
+
clientconfig:
|
|
80
|
+
run_image: redislabs/memtier_benchmark:edge
|
|
81
|
+
tool: memtier_benchmark
|
|
82
|
+
arguments: >
|
|
83
|
+
--key-prefix ""
|
|
84
|
+
--key-minimum 1
|
|
85
|
+
--key-maximum 100000
|
|
86
|
+
--pipeline=1
|
|
87
|
+
--print-percentiles=50,90,95,99
|
|
88
|
+
--run-count=1
|
|
89
|
+
--test-time=120
|
|
90
|
+
--command='EVAL "local key=KEYS[1];local limit=10;local window=60;local current=redis.call(\"INCR\",key);if current==1 then redis.call(\"EXPIRE\",key,window) end;if current>limit then return 0 else return 1 end" 1 ratelimit:user-__key__:/api/resource'
|
|
91
|
+
--command-key-pattern=R
|
|
92
|
+
--hide-histogram
|
|
93
|
+
resources:
|
|
94
|
+
requests:
|
|
95
|
+
cpus: '4'
|
|
96
|
+
memory: 2g
|
|
97
|
+
|
|
98
|
+
priority: 150
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
version: 0.4
|
|
2
|
+
name: memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10
|
|
3
|
+
description: 'This benchmark captures the performance of Redis under realistic **membership analytics** workloads, where frequent set algebra operations (intersection, union, difference) drive personalization, segmentation, and eligibility checks.'
|
|
4
|
+
dbconfig:
|
|
5
|
+
configuration-parameters:
|
|
6
|
+
save: '""'
|
|
7
|
+
check:
|
|
8
|
+
keyspacelen: 2
|
|
9
|
+
resources:
|
|
10
|
+
requests:
|
|
11
|
+
memory: 1g
|
|
12
|
+
init_commands:
|
|
13
|
+
- '"SADD" "set:{org1}:10" "lysbgqqfqw" "mtccjerdon" "jekkafodvk" "nmgxcctxpn" "vyqqkuszzh"
|
|
14
|
+
"pytrnqdhvs" "oguwnmniig" "gekntrykfh" "nhfnbxqgol" "cgoeihlnei"'
|
|
15
|
+
- '"SADD" "set:{org1}:100" "vyoomgwuzv" "xamjodnbpf" "ewomnmugfa" "ljcgdooafo" "pcxdhdjwnf"
|
|
16
|
+
"djetcyfxuc" "licotqplim" "alqlzsvuuz" "ijsmoyesvd" "whmotknaff" "rkaznetutk"
|
|
17
|
+
"ksqpdywgdd" "gorgpnnqwr" "gekntrykfh" "rjkknoigmu" "luemuetmia" "gxephxbdru"
|
|
18
|
+
"ncjfckgkcl" "hhjclfbbka" "cgoeihlnei" "zwnitejtpg" "upodnpqenn" "mibvtmqxcy"
|
|
19
|
+
"htvbwmfyic" "rqvryfvlie" "nxcdcaqgit" "gfdqdrondm" "lysbgqqfqw" "nxzsnkmxvi"
|
|
20
|
+
"nsxaigrnje" "cwaveajmcz" "xsepfhdizi" "owtkxlzaci" "agsdggdghc" "tcjvjofxtd"
|
|
21
|
+
"kgqrovsxce" "ouuybhtvyb" "ueyrvldzwl" "vpbkvwgxsf" "pytrnqdhvs" "qbiwbqiubb"
|
|
22
|
+
"ssjqrsluod" "urvgxwbiiz" "ujrxcmpvsq" "mtccjerdon" "xczfmrxrja" "imyizmhzjk"
|
|
23
|
+
"oguwnmniig" "mxwgdcutnb" "pqyurbvifk" "ccagtnjilc" "mbxohpancs" "lgrkndhekf"
|
|
24
|
+
"eqlgkwosie" "jxoxtnzujs" "lbtpbknelm" "ichqzmiyot" "mbgehjiauu" "aovfsvbwjg"
|
|
25
|
+
"nmgxcctxpn" "vyqqkuszzh" "rojeolnopp" "ibhohmfxzt" "qbyhorvill" "nhfnbxqgol"
|
|
26
|
+
"wkbasfyzqz" "mjjuylgssm" "imdqxmkzdj" "oapbvnisyq" "bqntlsaqjb" "ocrcszcznp"
|
|
27
|
+
"hhniikmtsx" "hlpdstpvzw" "wqiwdbncmt" "vymjzlzqcn" "hhjchwjlmc" "ypfeltycpy"
|
|
28
|
+
"qjyeqcfhjj" "uapsgmizgh" "owbbdezgxn" "qrosceblyo" "sahqeskveq" "dapacykoah"
|
|
29
|
+
"wvcnqbvlnf" "perfwnpvkl" "ulbrotlhze" "fhuvzpxjbc" "holjcdpijr" "onzjrteqmu"
|
|
30
|
+
"pquewclxuy" "vpmpffdoqz" "eouliovvra" "vxcbagyymm" "jekkafodvk" "ypekeuutef"
|
|
31
|
+
"dlbqcynhrn" "erxulvebrj" "qwxrsgafzy" "dlsjwmqzhx" "exvhmqxvvp"'
|
|
32
|
+
dataset_name: 2keys-set-10-100-elements-org1
|
|
33
|
+
dataset_description: This dataset contains 2 set keys, one with 10 elements and
|
|
34
|
+
the other with 100 elements. The smaller set is a subset of the larger one.
|
|
35
|
+
tested-commands:
|
|
36
|
+
- smembers
|
|
37
|
+
- sdiff
|
|
38
|
+
redis-topologies:
|
|
39
|
+
- oss-standalone
|
|
40
|
+
build-variants:
|
|
41
|
+
- gcc:15.2.0-amd64-debian-bookworm-default
|
|
42
|
+
- gcc:15.2.0-arm64-debian-bookworm-default
|
|
43
|
+
- dockerhub
|
|
44
|
+
clientconfig:
|
|
45
|
+
run_image: redislabs/memtier_benchmark:edge
|
|
46
|
+
tool: memtier_benchmark
|
|
47
|
+
arguments: --command="SDIFF set:{org1}:100 set:{org1}:10" --command "SMEMBERS set:{org1}:100" --command
|
|
48
|
+
"SMEMBERS set:{org1}:10" --command "SUNION set:{org1}:100 set:{org1}:10" --hide-histogram --test-time 180 --pipeline 10
|
|
49
|
+
resources:
|
|
50
|
+
requests:
|
|
51
|
+
cpus: '4'
|
|
52
|
+
memory: 2g
|
|
53
|
+
tested-groups:
|
|
54
|
+
- set
|
|
55
|
+
priority: 131
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redis-benchmarks-specification
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.9
|
|
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,8 @@ 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=zyRjf6Y-XPL1RkCtIxMiwaAsq9fkViPLJADnlm_tXio,3072
|
|
281
|
+
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml,sha256=uh0J81Y27_YnQfDqzaTpYtJNvIdRFJtYsBUmXGTBrl4,2842
|
|
280
282
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership.yml,sha256=y_q6GWbodKpVA48o1a1frqF0bU52utIOnjIjuiQt0qk,2816
|
|
281
283
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml,sha256=H98DrXlq-lRhoe1M7vehfDBbUdZ7WwWroriTpklx-PI,3646
|
|
282
284
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-json-100k-sessions.yml,sha256=MDvxjvFvIv_vnbeon8AEOd0XNouqGNhwer3JN_Vzi9c,3858
|
|
@@ -285,8 +287,8 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-st
|
|
|
285
287
|
redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml,sha256=2egtIxPxCze2jlbAfgsk4v9JSQHNMoPLbDWFEW8olDg,7006
|
|
286
288
|
redis_benchmarks_specification/test-suites/template.txt,sha256=ezqGiRPOvuSDO0iG7GEf-AGXNfHbgXI89_G0RUEzL88,481
|
|
287
289
|
redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml,sha256=PD7ow-k4Ll2BkhEC3aIqiaCZt8Hc4aJIp96Lw3J3mcI,791
|
|
288
|
-
redis_benchmarks_specification-0.2.
|
|
289
|
-
redis_benchmarks_specification-0.2.
|
|
290
|
-
redis_benchmarks_specification-0.2.
|
|
291
|
-
redis_benchmarks_specification-0.2.
|
|
292
|
-
redis_benchmarks_specification-0.2.
|
|
290
|
+
redis_benchmarks_specification-0.2.9.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
291
|
+
redis_benchmarks_specification-0.2.9.dist-info/METADATA,sha256=Vq1sm7xrOs4XePn-d58jGe_ZRGoW5ATpor_J22BwIGQ,22766
|
|
292
|
+
redis_benchmarks_specification-0.2.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
293
|
+
redis_benchmarks_specification-0.2.9.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
|
|
294
|
+
redis_benchmarks_specification-0.2.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|