A High Performance (About 1 million QPS) Persistent Key-Value Store Based on Redis Protocol
C++ Other
Switch branches/tags
Nothing to show
Clone or download
anysql Update README.md
add user list
Latest commit 4673bba Mar 8, 2017
Permalink
Failed to load latest commit information.
doc update file Oct 12, 2016
src Merge pull request #21 from Leviathan1995/master Nov 16, 2016
tmp add ReadMe.md Oct 12, 2016
Makefile modify Makefile Nov 9, 2016
README.md Update README.md Mar 9, 2017
onevalue.xml modify master default ip Oct 26, 2016

README.md

OneValue

A High Performance (About 1 million QPS) Persistent Key-Value Store Based on Redis Protocol, You can download the precompiled binary for RHEL5/CentOS5 or above.

User List

http://www.bv2008.cn

Performance test

Environment

Physical Machine (16 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 32G)

Config file

<onevalue port="8221" thread_num="8" hash_value_max="240" work_dir="mydb">
  <db_node name="db1" hash_min="0" hash_max="19"></db_node>
  <db_node name="db2" hash_min="20" hash_max="39"></db_node>
  <db_node name="db3" hash_min="40" hash_max="59"></db_node>
  <db_node name="db4" hash_min="60" hash_max="79"></db_node>
  <db_node name="db5" hash_min="80" hash_max="99"></db_node>
  <db_node name="db6" hash_min="100" hash_max="119"></db_node>
  <db_node name="db7" hash_min="120" hash_max="139"></db_node>
  <db_node name="db8" hash_min="140" hash_max="159"></db_node>
  <db_node name="db9" hash_min="160" hash_max="179"></db_node>
  <db_node name="db10" hash_min="180" hash_max="199"></db_node>
  <db_node name="db11" hash_min="200" hash_max="219"></db_node>
  <db_node name="db12" hash_min="220" hash_max="239"></db_node>
</onevalue>

By adjust the thread_num and the db_node count, you can get better performance according to the CPU number and the IO capacity.

Test script(GET, SET)

for i in {1..5}
do
 nohup ./redis-benchmark -h [host] -p [port] -t get,set -r 1000000 -n 1000000 -q > ${i}.log 2>&1 &
done

Save to test.sh and execute.

View result

cat *.log
SET: 60971.89 requests per second
GET: 84288.60 requests per second

SET: 60244.59 requests per second
GET: 83619.03 requests per second

SET: 60620.75 requests per second
GET: 80952.00 requests per second

SET: 60444.87 requests per second
GET: 81017.58 requests per second

SET: 60459.49 requests per second
GET: 87943.01 requests per second

Summary: SET is 30W+/s, GET is 40W+/s

Pipeline test script(GET, SET)

for i in {1..5}
do
 nohup ./redis-benchmark -h [host] -p [port] -t get,set -r 1000000 -n 1000000 -q -P 10 > ${i}.log 2>&1 &
done

View result

cat *.log
SET: 102564.10 requests per second
GET: 206654.25 requests per second

SET: 103444.71 requests per second
GET: 204582.66 requests per second

SET: 103745.20 requests per second
GET: 202634.25 requests per second

SET: 103939.30 requests per second
GET: 202470.12 requests per second

SET: 102511.53 requests per second
GET: 206611.56 requests per second

Summary: SET is 50W+/s, GET is 100W+/s