redis-cluster-benchmark
Version, currently 0.3.66 versions
github.com/maiha/redis-cluster-benchmark.cr
Benchmark utils for Redis Cluster
16 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
redis-cluster-benchmark:
github: maiha/redis-cluster-benchmark.cr
version: ~> 0.3.6Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- maiha <maiha@wota.jp>
Dependencies
Runtime Dependencies
- toml-config0.2.0github: maiha/toml-config.cr
- redis-cluster0.6.7github: maiha/redis-cluster.cr
README
# redis-cluster-benchmark [](https://travis-ci.org/maiha/redis-cluster-benchmark.cr) Benchmark utils for Redis Cluster that is inspired by `redis-benchmark`. ## Installation #### Static Binary is ready for x86 linux - https://github.com/maiha/redis-cluster-benchmark.cr/releases #### Compile from source - crystal-0.19.4 ready ```shell % crystal deps # first time only % make % cp bin/redis-cluster-benchmark /usr/local/bin/ ``` ## Config - See: `bench.toml` ```toml [redis] clusters = "127.0.0.1:7001,127.0.0.1:7002" # at least one node # password = "secret" [bench] requests = 100000 # number of requests for each commands keyspace = 10000 # max number of key for `__rand_int__` tests = "set __rand_int__ __rand_int__" after = "set result/last __result__" # after = "rpush results __result__" qps = 5000 # debug = true [report] interval_sec = 1 verbose = true ``` ## Run ```shell % redis-cluster-benchmark bench.toml === set __rand_int__ __rand_int__ === 17:19:52 [5.0%] 5002/100000 (4989.3 qps) 17:19:53 [10.0%] 10003/100000 (4996.1 qps) ... 17:20:11 [95.1%] 95086/100000 (5000.9 qps) 17:20:12 done 100000 in 20.8 sec (0.0) SET: 5820.68 rps (OK: 100000, KO: 0) ``` - Algthough we sent 100,000 requests, only 10,000 keys are created due to `keyspace = 10000`. ``` % rcm -u :7001 info count 893550 [127.0.0.1:7001] cnt(3334) bd4456 [127.0.0.1:7002] cnt(3330) 87b981 [127.0.0.1:7003] cnt(3336) ``` - rcm: https://github.com/maiha/rcm.cr/releases #### After Hook - We can set after hook by `after` field in `bench` section. - In above example, benchmark result has been set in redis via special keyword `__result__`. ``` % redis-cli -c -p 7001 get result/last "1977.6 qps (OK:100000, KO:0) [02:53:26 +51s]" ``` - Of course, apending logs is good idea by `rpush` ``` after = "rpush results __result__" ``` #### Error Reporting ``` 12:00:26 [94.6%] 946044/1000000 (4993.2 qps) # KO: 109 12:00:27 [95.1%] 951045/1000000 (4992.1 qps) # KO: 270 12:00:28 [95.6%] 956046/1000000 (4991.9 qps) # KO: 110 12:00:29 [96.1%] 961047/1000000 (4994.8 qps) 12:00:30 [96.6%] 966048/1000000 (4994.4 qps) 12:00:31 [97.1%] 971049/1000000 (4990.4 qps) 12:00:32 [97.6%] 976050/1000000 (4992.0 qps) 12:00:33 [98.1%] 981051/1000000 (4991.3 qps) 12:00:34 [98.6%] 986052/1000000 (4997.0 qps) 12:00:35 [99.1%] 991053/1000000 (4995.3 qps) 12:00:36 [99.6%] 996054/1000000 (4993.2 qps) 12:00:36 done 1000000 in 201.9 sec (4953.0 qps) # KO: 818 SET: 4953.0 qps (OK:999182, KO:818) [11:57:15 +3m21s] # RedisError: OOM command not allowed when used memory > 'maxmemory'. (ERRORS) RedisError: OOM command not allowed when used memory > 'maxmemory'. === [AFTER] RPUSH results __result__ === ``` ## Roadmap #### 0.4 - [x] Reconnect after errors - [ ] Multi Clients #### 0.5 - [ ] Connection Setting (use `keep alive` or not) - [ ] Protocol Setting (use `pipeline` or not) ## Contributing 1. Fork it ( https://github.com/maiha/redis-cluster-benchmark/fork ) 2. Create your feature branch (git checkout -b my-new-feature) 3. Commit your changes (git commit -am 'Add some feature') 4. Push to the branch (git push origin my-new-feature) 5. Create a new Pull Request ## Contributors - [maiha](https://github.com/maiha) maiha - creator, maintainer
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.3.6- Tagged
- Oct 25, 2016
- Commit
e967ba434dd8- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/maiha/redis-cluster-benchmark.cr
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 13, 2026
- Synced
- Aug 13, 2026
- Versions
- 6