当使用memcached的get(final Collection<String> keyCollections)操作的时候当keyCollections在一定的范围内是比较稳定、低于这个范围则无法充分利用memcached的性能、高于这个范围则超过memcached的吞吐量同样影响memcached的性能;
为了知道memcached的get操作一次性能够获取多少对象、我做了如下测试:
从两台memcached服务端中存储了10000用户对象、对象的平均大小是773字节
使用get(final Collection<String> keyCollections)方法获取对象、获取对象的数量每次递增5个
测试环境:
2个Memcached部署在两台普通的PC上
PC:2G内存、CPU: 2.8G *2
网络:100M的宽带局域网
memcached的客户端是:XMemcached
测试结果如下:
注:size为get的数量 执行时间是get完10000个对象耗费的时间
size:1 执行时间:5703
size:6 执行时间:4656
size:11 执行时间:2297
size:16 执行时间:2047
size:21 执行时间:1891
size:26 执行时间:1797
size:31 执行时间:1687
size:36 执行时间:1718
size:41 执行时间:1750
size:46 执行时间:1625
size:51 执行时间:1641
size:56 执行时间:1641
size:61 执行时间:1625
size:66 执行时间:1656
size:71 执行时间:1640
size:76 执行时间:1625
size:81 执行时间:1625
size:86 执行时间:1625
size:91 执行时间:1625
size:96 执行时间:1625
size:101 执行时间:1594
size:106 执行时间:1625
size:111 执行时间:1640
size:116 执行时间:1625
size:121 执行时间:1609
size:126 执行时间:1609
size:131 执行时间:1594
size:136 执行时间:1610
size:141 执行时间:1625
size:146 执行时间:1578
size:151 执行时间:1594
size:156 执行时间:1547
size:161 执行时间:1578
size:166 执行时间:1563
size:171 执行时间:1516
size:176 执行时间:1578
size:181 执行时间:1562
size:186 执行时间:1563
size:191 执行时间:1562
size:196 执行时间:1547
size:201 执行时间:1563
size:206 执行时间:1578
size:211 执行时间:1546
size:216 执行时间:1593
size:221 执行时间:1547
size:226 执行时间:1500
size:231 执行时间:1515
size:236 执行时间:1579
size:241 执行时间:1625
size:246 执行时间:1594
size:251 执行时间:1516
size:256 执行时间:1515
size:261 执行时间:1515
size:266 执行时间:1515
size:271 执行时间:1579
size:276 执行时间:1562
size:281 执行时间:1579
size:286 执行时间:1547
size:291 执行时间:1563
size:296 执行时间:1625
size:301 执行时间:1578
size:306 执行时间:1609
size:311 执行时间:1547
size:316 执行时间:1578
size:321 执行时间:1500
size:326 执行时间:1579
size:331 执行时间:1500
size:336 执行时间:1515
size:341 执行时间:1485
size:346 执行时间:1563
size:351 执行时间:1594
size:356 执行时间:1531
size:361 执行时间:1532
size:366 执行时间:1500
size:371 执行时间:1531
size:376 执行时间:1469
size:381 执行时间:1516
size:386 执行时间:1516
size:391 执行时间:1562
size:396 执行时间:1531
size:401 执行时间:1531
size:406 执行时间:1516
size:411 执行时间:1516
size:416 执行时间:1515
size:421 执行时间:1531
size:426 执行时间:1500
size:431 执行时间:1437
size:436 执行时间:1750
size:441 执行时间:1843
size:446 执行时间:2250
size:451 执行时间:1984
size:456 执行时间:3343
size:461 执行时间:3547
size:466 执行时间:2796
size:471 执行时间:3187
size:476 执行时间:3485
size:481 执行时间:3109
size:486 执行时间:4437
size:491 执行时间:4250
size:496 执行时间:3125
结果分析:
当一次获取一个对象的时候获取10000个对象需要5.7秒
当一次获取50对象的时候获取10000个对象只需要1.6秒
当一次获取450个对象的时候获取10000个对象则需要3秒多
由此可以得出结论:memcached批量获取对象随着数量的递增性能也有所提升、当批量获取的数量递增到一定的范围的时候性能达到最佳水平无法再提升、超过这个范围则会随着数量的递增性能逐渐降低。
所以合适的设置批量获取memcached对象对memcached有很大的性能提升(官方给出的数字是可以提升5倍)
分享到:
相关推荐
- 可能包括性能测试,以评估不同操作的性能和效率。 - 可能涉及的高级特性,如分布式锁、持久化策略、过期策略等。 学习并实践这些测试例子,可以帮助C#开发者熟练掌握使用Memcached进行缓存管理的技巧,提高应用的...
Memcached也支持批量操作,例如批量设置和获取多个键值对。 ```python mc.set_multi({'key1': 'value1', 'key2': 'value2'}) values = mc.get_multi(['key1', 'key2']) ``` ### 8. 常见问题与优化 1. **内存不足*...
memcached 是一个高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。以下是关于 memcached 的详细介绍,以及在 Linux 环境下的安装步骤。 1. **memcached 简介**: - memcached 是由 ...
在提供的压缩包中,可能包含了一些关于如何使用或测试Memcached的资源,如`MemcachedTest`可能是用于测试Memcached的脚本或工具,而`网盘资源搜索-【51pansou.com】.txt`和`51pansou-海量网盘资源任意搜索.url`可能...
Memcached 是一个广泛使用的分布式内存对象缓存系统,它能提高 Web 应用程序的性能。它通过将数据存储在内存中,提供快速的访问速度。Memcached 的主要特点包括简单的键值对存储、内存优化的数据结构以及基于内存的...
Memcached是一种高性能、分布式的内存对象缓存系统,广泛应用于减轻数据库压力,加速数据访问。下面将详细阐述如何在Java项目中测试与Memcached服务端的连接。 首先,为了在Java工程中使用Memcached,我们需要引入...
Memcached是一款高性能的、分布式的内存对象缓存系统,它广泛应用于减轻数据库负载,提升Web应用性能。在本文中,我们将深入探讨Memcached的基本概念、工作原理,以及如何在Windows环境下安装和使用。 ### ...
- **测试与监控**:进行性能测试和监控,以确保缓存效果和系统稳定性。 通过理解和使用"C# Memcached client.zip"中的源代码,开发者能够自定义和优化客户端库以满足特定项目的需求,同时也可以深入理解Memcached的...
3. **序列化与反序列化**:由于Memcached只存储二进制数据,客户端需要将Java对象序列化为字节数组,并在获取时反序列化回原来的对象。这可能涉及自定义序列化策略或者依赖于第三方库,如Java自带的Serializable接口...
标题“memcache基本使用-已测试”涉及到的是一个关于Memcached缓存系统的基础教程或实践经验,其中可能包括如何安装、配置、以及在实际项目中如何使用Memcached来提高应用程序性能。描述中的“NULL”意味着没有提供...
通过批量设置、获取可以减少网络往返次数,提高性能。 2. **缓存预热**: 在应用启动时,预先加载常用数据到缓存中。 3. **连接池管理**: 适当调整连接池大小,避免资源浪费。 4. **缓存策略**: 根据业务...
1. 减少DOM操作:频繁操作DOM会降低性能,应尽量减少DOM操作,使用DocumentFragment或批量操作提高效率。 2. 代码混淆与压缩:通过工具对JavaScript和CSS进行混淆和压缩,减小文件大小,提高加载速度。 3. 使用最新...
9. **测试与监控**:通过单元测试验证缓存逻辑的正确性,同时利用监控工具监控Memcached的性能指标,如命中率、缓存大小等,以便及时调整策略。 通过以上分析,这个"memcache-demo"项目提供了学习和实践如何在...
- memcached是一种开源的高性能、分布式内存对象缓存系统。 - **1.1.6 Hypertable** - Hypertable是一个基于Google Bigtable设计的大规模分布式数据库。 **1.2 为什么选择Key-Value Store** - **1.2.1 大规模的...
- **mget**: 批量获取多个键值。 - **incr/decr**: 自增/自减键值。 - **append**: 在键值末尾追加字符串。 - **strlen**: 获取键值长度。 ##### 2.3 hashes类型及操作 - **hset/hmset**: 设置Hash表的字段值。 - *...
开发完成后,需要进行单元测试、集成测试和性能测试,确保代码质量和系统的稳定性。部署环节包括服务器配置、环境搭建、版本控制(如Git)和持续集成/持续部署(CI/CD)流程。 10. **合规性与安全性** 作为交易...
3. **模型与查询集**:Django的ORM允许开发者以Python代码操作数据库,QuerySet对象提供了多种批量操作方法,如`all()`, `filter()`, `exclude()`等,可以用于获取、筛选和修改大量记录。 4. **批量创建对象**:...
6. **性能优化**:Egg支持中间件,可以利用缓存策略(如Redis或Memcached)减少数据库查询,提高性能。同时,考虑使用异步操作和批量处理,以避免阻塞I/O。 7. **测试与部署**:编写单元测试和集成测试,确保代码...
- **memcached**: 高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高动态Web应用的速度。 - **Hypertable**: 基于Google Bigtable设计的分布式、可扩展的大规模数据存储系统。 **1.2 为什么选择Key-Value ...