ming1016@gmail.com
I had tested the following key-value store for set() and get()
MemcacheDB, use memcached client protocol.
Tokyo Tyrant (Tokyo Cabinet), use memcached client protocol
Redis, use JRedis Java client
1. Test environment
1.1 Hardware/OS
2 Linux boxes in a LAN, 1 server and 1 test client
Linux Centos 5.2 64bit
Intel(R) Xeon(R) CPU E5410 @ 2.33GHz (L2 cache: 6M), Quad-Core * 2
8G memory
SCSI disk (standalone disk, no other access)
1.2 Software version
db-4.7.25.tar.gz
libevent-1.4.11-stable.tar.gz
memcached-1.2.8.tar.gz
memcachedb-1.2.1-beta.tar.gz
redis-0.900_2.tar.gz
tokyocabinet-1.4.9.tar.gz
tokyotyrant-1.1.9.tar.gz
1.3 Configuration
Memcachedb startup parameter
Test 100 bytes
./memcachedb -H /data5/kvtest/bdb/data -d -p 11212 -m 2048 -N -L 8192
(Update: As mentioned by Steve, the 100-byte-test missed the -N paramter, so I added it and updated the data)
Test 20k bytes
./memcachedb -H /data5/kvtest/mcdb/data -d -p 11212 -b 21000 -N -m 2048
Tokyo Tyrant (Tokyo Cabinet) configuration
Use default Tokyo Tyrant sbin/ttservctl
use .tch database, hashtable database
ulimsiz=”256m”
sid=1
dbname=”$basedir/casket.tch#bnum=50000000″ # default 1M is not enough!
maxcon=”65536″
retval=0
Redis configuration
timeout 300
save 900 1
save 300 10
save 60 10000
# no maxmemory settings
1.4 Test client
Client in Java, JDK1.6.0, 16 threads
Use Memcached client java_memcached-release_2.0.1.jar
JRedis client for Redis test, another JDBC-Redis has poor performance.
2. Small data size test result
Test 1, 1-5,000,000 as key, 100 bytes string value, do set, then get test, all get test has result.
Request per second(mean)key-value-performance-1(Update)
Store Write Read
Memcached 55,989 50,974
Memcachedb 25,583 35,260
Tokyo Tyrant 42,988 46,238
Redis 85,765 71,708
Server Load Average
Store Write Read
Memcached 1.80, 1.53, 0.87 1.17, 1.16, 0.83
MemcacheDB 1.44, 0.93, 0.64 4.35, 1.94, 1.05
Tokyo Tyrant 3.70, 1.71, 1.14 2.98, 1.81, 1.26
Redis 1.06, 0.32, 0.18 1.56, 1.00, 0.54
3. Larger data size test result
Test 2, 1-500,000 as key, 20k bytes string value, do set, then get test, all get test has result.
Request per second(mean)
(Aug 13 Update: fixed a bug on get() that read non-exist key)
key-value-performance-2(update)
Store Write Read
Memcachedb 357 327
Tokyo Tyrant 3,501 257
Redis 1,542 957
4. Some notes about the test
When test Redis server, the memory goes up steadily, consumed all 8G and then use swap(and write speed slow down), after all memory and swap space is used, the client will get exceptions. So use Redis in a productive environment should limit to a small data size. It is another cache solution rather than a persistent storage. So compare Redis together with MemcacheDB/TC may not fair because Redis actually does not save data to disk during the test.
Tokyo cabinet and memcachedb are very stable during heavy load, use very little memory in set test and less than physical memory in get test.
MemcacheDB peformance is poor for write large data size(20k).
The call response time was not monitored in this test.
请在左侧登录后再来发评论
分享到:
相关推荐
Memcached VS Redis:2者究竟有哪些区别,什么场景下应用那种类型的缓存服务器。
因此,它的性能测试通常会关注以下几个方面: - **吞吐量**:单位时间内能够处理的操作数量。 - **延迟**:完成单个操作所需的时间。 - **并发能力**:支持同时连接的客户端数量。 通过这些指标,可以评估 ...
Redis以其高性能、高可用、易扩展的特性,成为现代分布式系统不可或缺的一部分。 Redis是一种基于键值对的内存数据库,同时也提供了简单的消息队列功能,并且支持多种数据结构,包括字符串(strings)、散列...
Redis是一款开源的高性能键值存储数据库系统,它通常被用作数据库、缓存和消息代理,支持多种类型的数据结构,如字符串、散列、列表、集合、有序集合等。Redis支持数据的持久化,可以将内存中的数据保存到磁盘上,以...
1. **键值存储**:如Tokyo Cabinet/Tyrant、Berkeley DB、MemcacheDB、Redis等,特点是使用键值对形式存储数据,访问速度快,但缺乏复杂查询功能。 2. **文档数据库**:如MongoDB、CouchDB等,使用JSON或类似格式...
**Redis**作为一款高性能的键值(Key-Value)存储系统,在现代软件架构中扮演着重要的角色。与其他键值存储系统如**Voldemort**、**Dynamo**、**memcachedb**、**Cassandra**、**memcached**和**Hypertable**等相比,...
Redis作为一款开源的高性能键值对数据库,因其操作简便、性能强大以及多种数据类型支持,在IT领域被广泛应用。本知识体系将从Redis的基本概念、数据类型操作、常用命令以及高级特性等方面进行详细说明。 ### Redis...
- **memcachedb**: 结合了memcached的高性能和传统键值存储系统的持久化功能,提供了一个兼具速度与可靠性的解决方案。 - **Cassandra**: 一种分布式NoSQL数据库,支持横向扩展,主要用于处理大量结构化数据,具有高...
- **特点**: memcachedb 结合了memcached的高性能和NoSQL数据库的功能,支持ACID事务。 - **应用场景**: 适用于需要高性能缓存和简单事务支持的应用场景。 ##### 1.1.4 Cassandra - **特点**: Cassandra 是一种...
- 通过这些命令,开发者可以快速测试和调试 `memcachedb` 实例。 4. **API 使用** - `memcachedb` 提供多种语言的客户端库,如 C、Python、Java 和 PHP,使得开发者能够轻松地在应用中集成缓存功能。 - API 包含...
Redis是一种开源的高性能键值对数据库,它通常用作数据库、缓存或消息代理。本篇知识整理将基于《Redis实战》电子书的目录和部分章节内容,对Redis的核心知识点进行介绍。 ### 第一章Redis快速入门 #### 1.1 Key-...
- **定义**:memcachedb是在memcached的基础上添加了持久化功能的一个高性能键值存储系统。 - **特点**: - 继承了memcached的高性能和简单易用的特点。 - 支持自动故障恢复和数据复制功能,增强了数据的安全性。 ...
- **社交网络**:利用Redis的高性能来存储用户关系和动态数据。 - **电商网站**:用Redis进行购物车数据的缓存,提高页面加载速度。 - **游戏开发**:使用Redis存储玩家状态等实时变化的数据。 #### 三、初识...
Redis是一款开源的、高性能的键值存储数据库系统,它支持多种数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)。在本文件中,我们可以了解到Redis的相关特性...
### Redis实战中文版知识点概述 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **特点**: Voldemort是一款分布式键值存储系统,特别适用于读多写少的应用场景。 - **应用场景**: 主要应用于需要高度可...
### Redis实战完整版知识点概述 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **特点**: Voldemort是一款分布式键值存储系统,特别适用于大规模读写密集型的应用场景。 - **应用场景**: 常用于缓存、...