KeyValue存储方案最简对比
目的
- 对比自己使用过的几种Key-Value存储方案最简情景中的效率.
环境
- 硬件:
- CPU: Intel(R) Core(TM)2 Duo CPU E7200 @ 2.53GHz
- MEMORY: 2GB
- HD : ST3250310AS
- 软件:
- OS: i386 Linux 2.6.31
- Python: 2.6.4 / py-redis 0.6.1 / cmemcache r 431 / mysql-py 1.2.2 /PyMongo? v1.6
- Redis:1.02
- Memcached: 1.2.8
- Mysql: 5.1.37
- mongoDB: 1.4.2
KEY-VALUE 数据SET,GET
对 Redis,Memcache,MySQL(myisam table),MySQL(memory table),MongoDB分别以5个线程进行各100000次set/get
- 测试脚本:
- Mysql Schema:
CREATE DATABASE IF NOT EXISTS key_value_benchmark; USE key_value_benchmark; CREATE TABLE `key_value_benchmark`.`memory_table` ( `key` varchar(512) NOT NULL, `value` varchar(512) DEFAULT NULL, PRIMARY KEY (`key`) ) ENGINE=MEMORY DEFAULT CHARSET=latin1; CREATE TABLE `key_value_benchmark`.`myisam_table` ( `key` varchar(512) NOT NULL, `value` varchar(512) DEFAULT NULL, PRIMARY KEY (`key`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
测试结果图表
- 蓝色: redis
- 黑色: memcached
- 橙色: mysql(myisam)
- 黄色: mysql(memory)
- 绿色: mongodb
| 耗时(妙) | redis | memcached | mysql(myisam) | mysql(memory) | mongodb |
| set | 23 | 12 | 51 | 40 | 19 |
| get | 26 | 10 | 86 | 76 | 51 |
原始测试结果
redis
set:
lvs@lvs-dell:~/temp/nosql-benchmark$ python redis_benchmark.py set 5 100000 Got 0 set 23.7233541012 Got 1 set 24.1076848507 Got 2 set 23.5855329037 Got 3 set 22.3091208935 Got 4 set 21.5657048225 avg time is : 23.0582795143
get:
lvs@lvs-dell:~/temp/nosql-benchmark$ python redis_benchmark.py get 5 100000 Got 0 get 27.0135290623 Got 1 get 27.0588710308 Got 2 get 26.8619720936 Got 3 get 26.7981190681 Got 4 get 26.6335082054 avg time is : 26.873199892
memcacache
set:
lvs@lvs-dell:~/temp/nosql-benchmark$ python memcache_benchmark.py set 5 100000 Got 0 set 14.4166228771 Got 1 set 9.91025304794 Got 2 set 11.627767086 Got 3 set 11.3887419701 Got 4 set 14.8926529884 avg time is : 12.4472075939
get:
lvs@lvs-dell:~/temp/nosql-benchmark$ python memcache_benchmark.py get 5 100000 Got 0 get 11.9404599667 Got 1 get 10.1794390678 Got 2 get 10.2537441254 Got 3 get 11.7703640461 Got 4 get 10.2396869659 avg time is : 10.8767388344
mysql isam
set:
lvs@lvs-dell:~/temp/nosql-benchmark$ python mysql_benchmark.py myisam set 5 100000 table_type: myisam Got 0 set 50.7731218338 Got 1 set 51.2120161057 Got 2 set 50.7763359547 Got 3 set 50.4115722179 Got 4 set 50.8741919994 avg time is : 50.8094476223
get:
lvs@lvs-dell:~/temp/nosql-benchmark$ python mysql_benchmark.py myisam get 5 100000 table_type: myisam Got 0 get 84.6942389011 Got 1 get 86.7919590473 Got 2 get 86.3120980263 Got 3 get 85.7578771114 Got 4 get 85.3862650394 avg time is : 85.7884876251
mysql memory
set:
lvs@lvs-dell:~/temp/nosql-benchmark$ python mysql_benchmark.py memory set 5 100000 table_type: memory Got 0 set 40.0606198311 Got 1 set 38.1395039558 Got 2 set 40.2925269604 Got 3 set 39.4340929985 Got 4 set 40.7070069313 avg time is : 39.7267501354
get:
lvs@lvs-dell:~/temp/nosql-benchmark$ python mysql_benchmark.py memory get 5 100000 table_type: memory Got 0 get 74.5096290112 Got 1 get 76.852478981 Got 2 get 76.7772979736 Got 3 get 75.4090471268 Got 4 get 76.0928859711 avg time is : 75.9282678127
mongodb
set :
lvs@lvs-dell:~/temp/nosql-benchmark$ python mongodb_benchmark.py set 5 100000 Got 0 set 19.2554059029 Got 1 set 19.409537077 Got 2 set 18.8321840763 Got 3 set 19.3562998772 Got 4 set 18.2492520809 avg time is : 19.0205358028
get:
lvs@lvs-dell:~/temp/nosql-benchmark$ python mongodb_benchmark.py get 5 100000 Got 0 get 51.4534339905 Got 1 get 51.1660151482 Got 2 get 51.386808157 Got 3 get 51.3365850449 Got 4 get 51.4308290482 avg time is : 51.3547342777
TODO
- 服务端,客户端分离
- 多进程并发
- 测试数据量,速度相关性
- 更复杂的测试用例
Other
Attachments
-
kv_speed.png
(5.7 KB) -
added by lvs 21 months ago.

