Transaction | Pipeline | 耗时(s) | |
测试一: | N | N | 311 |
测试二: | N | Y | 10 |
测试三: | Y | Y | 7 |
测试四: | Y | N | 10 |
结论:Pipeline + Transaction方式是几种插入方式中性能最好的。虽然有点意外,但测试多次仍然是这个结论。
测试代码如下:
import org.apache.commons.lang.RandomStringUtils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.Pipeline; import redis.clients.jedis.Transaction; public class RedisTransactionTest { private static String host = "xx.xx.xx.xx"; private static JedisPool pool = new JedisPool(new JedisPoolConfig(), host); private long rowCount = 1000000; // 100万 public static void main(String[] args) { long start = System.currentTimeMillis(); new RedisTransactionTest().noTransactionNoPipeline(); System.out.println("noTransactionNoPipeline use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().pipelineWithoutTransaction(); System.out.println("pipelineWithoutTransaction use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().pipelineWithTransaction(); System.out.println("pipelineWithTransaction use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().transactionNoPipeline(); System.out.println("transactionNoPipeline use " + (System.currentTimeMillis() - start) / 1000); } public void pipelineWithoutTransaction() { Jedis jedis = pool.getResource(); try { Pipeline p = jedis.pipelined(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); p.set(key, RandomStringUtils.randomNumeric(5)); p.expire(key, 5 * 60); } p.sync(); } catch (Exception e) { pool.returnResource(jedis); } } public void pipelineWithTransaction() { Jedis jedis = pool.getResource(); try { Pipeline p = jedis.pipelined(); p.multi(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); p.set(key, RandomStringUtils.randomNumeric(5)); p.expire(key, 5 * 60); } p.exec(); p.sync(); } catch (Exception e) { pool.returnResource(jedis); } } public void noTransactionNoPipeline() { Jedis jedis = pool.getResource(); try { for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); jedis.set(key, RandomStringUtils.randomNumeric(5)); jedis.expire(key, 5 * 60); } } catch (Exception e) { pool.returnResource(jedis); } } public void transactionNoPipeline() { Jedis jedis = pool.getResource(); try { Transaction tx = jedis.multi(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); tx.set(key, RandomStringUtils.randomNumeric(5)); tx.expire(key, 5 * 60); } tx.exec(); } catch (Exception e) { pool.returnResource(jedis); } } }
--end
相关推荐
由于其出色的性能,Redis在处理大量数据和高并发场景下表现优异,被广泛应用于缓存、消息队列、计数器、会话存储等多种场景。 ### 异步队列的优势 在高并发数据入库的场景下,异步队列可以极大地提高系统的处理...
2. **出库管理**:管理销售出库、退货处理,支持多种出库方式(如普通销售、调拨、盘点等),并实时更新库存数量。 3. **库存查询**:提供实时库存查询功能,可按商品名称、型号、仓库等条件快速查找库存情况。 4....
7. 结算系统:自动计算医疗费用,支持多种支付方式,如现金、刷卡、电子支付等。 8. 报表统计:提供各类数据报表,如收支报表、诊疗量统计,便于医院管理层分析决策。 四、技术栈解析 1. SpringBoot:作为核心框架...
2. 性能优化:通过缓存技术(如Redis)减少数据库访问,提高系统响应速度。 3. 安全防护:使用Spring Security进行权限控制,防止非法访问;同时,定期进行安全审计,防范潜在风险。 综上所述,SpringBoot410粮仓...
- 采用合适的缓存策略(如Redis)提高系统性能,减少数据库压力。 - 为了保证系统的可扩展性和维护性,遵循良好的编程规范和设计模式,如单一职责原则、开闭原则等。 系统上线后,还需要进行持续优化,根据实际运行...
Java提供了多种方式来实现数据持久化,如文件系统操作、数据库连接、序列化等。在仓库管理系统中,通常会选择关系型数据库如MySQL或Oracle来存储大量结构化的库存信息,通过JDBC(Java Database Connectivity)接口...
WMS系统可能涉及到物料、库存、出入库记录等多种实体模型,需要合理设计数据库表结构,并实现对应的CRUD操作。 此外,系统安全也是关键一环。SpringBoot集成了Spring Security,提供了身份验证和授权功能。在WMS...
6. **缓存机制**:对于提高性能,系统可能会采用缓存技术,如Redis或Hazelcast,来存储经常访问的数据,减少数据库查询次数。 7. **单元测试与集成测试**:Spring Boot支持JUnit和Mockito等工具进行单元测试,而...
它涵盖了图书的入库、借阅、归还、续借、预约、查询等多种功能,大大减轻了工作人员的工作负担,提高了服务质量。本系统源码的实现,通常会涉及以下几个关键技术点: 1. 数据库设计:图书馆管理系统的基础是数据库...
同时,系统性能优化也是重要的一环,可以通过缓存技术(如Redis)、数据库索引优化、负载均衡等方式提升系统响应速度和并发处理能力。 在部署方面,SSM购物商城可能采用微服务架构,将不同模块拆分为独立的服务,以...
3. **分布式系统**: 高并发场景下,通过负载均衡、分布式缓存、分布式数据库等方式提升系统性能。 四、安全与性能优化 1. **权限控制**: 通过角色和权限分配,确保数据安全,防止非法访问。 2. **事务管理**: 保证...
总结,这个基于SpringBoot的社区医院信息平台项目,集成了多种现代开发技术,旨在为社区医院提供高效、便捷的信息管理解决方案。通过深入学习和理解该项目源码,开发者可以进一步掌握Java Web开发技巧,为实际项目...
4. 测试:单元测试、集成测试确保功能正常,性能测试确保系统稳定。 5. 部署上线:在服务器上配置运行环境,部署应用,进行压力测试和监控。 六、移动_scm子文件可能包含的内容 "mobile_scm"可能是移动设备上的供应...
Spring MVC还支持多种视图技术,如JSP、Thymeleaf等,方便展示数据。 **MyBatis** 是一个优秀的持久层框架,它简化了数据库操作,将SQL语句与Java代码分离,提供了动态SQL的功能。在医疗管理系统中,MyBatis可以...
为了提高系统性能,可以采用缓存技术如ASP.NET缓存或Redis来减少数据库查询,同时通过异步编程和页面分页来提升用户体验。另外,数据库索引的合理设计和优化也是提升查询速度的关键。 【总结】 小型图书管理系统...
7. **性能优化**: 为了保证系统的高效运行,可能会涉及到数据库索引优化、缓存策略(如Redis)、批处理和异步处理等技术。同时,安全性方面,系统可能需要实现用户权限控制、数据加密、防止SQL注入等功能。 8. **...
- **财务管理**:处理挂号费、诊疗费、药品费用的计算和结算,支持多种支付方式。 - **报表统计**:生成各类运营报告,如就诊人次、收入统计、药品消耗分析等,为决策提供数据支持。 在系统设计时,可以采用MVC...
- 性能优化:使用缓存技术(如Redis)提高数据读取速度,减少数据库压力。 - 异常处理:通过全局异常处理器,统一处理系统运行时可能出现的异常情况。 总结,SSM药店销售管理系统充分利用了Spring、SpringMVC和...
而 Redis 的引入,进一步优化了高并发场景下的性能。 系统设计上,通常包含以下几个核心模块: 1. **用户管理**:包括用户注册、登录、权限控制等功能,JWT 的使用确保了安全的用户认证。 2. **资源调度**:如预约...