背景:同事说Redis在插入数据时,同样存在插入速度慢,只是get获取时快,通过做实验,完全不是那么回事,同事说的话也根本没有找到有关官方的说法,仅仅是凭几个简单的操作,应该是不能作为依据的。
今天贴出几个批量操作数据的方法(测试的环境是局域网-单机, Linux要快过Windows):
windows:
redis_version:2.8.12
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:winsock_IOCP
Linux:
redis_version:2.6.17
redis_mode:standalone
os:Linux 3.10.42-52.145.amzn1.x86_64 x86_64
arch_bits:64
(redis_version:2.8.17
redis_mode:standalone
os:Linux 2.6.32-33-server x86_64
arch_bits:64)
这里使用redis的数据类型:hashs 和 lists
一次性插入100000条数据消耗时间,windows在3秒以内,linux在2秒以内。
lists数据类型的操作:
/** * 从尾部开始插入数据(删除并插入新的数据) 队列, 先进先出 * @param db * @param key * @param arr * @return */ public static boolean rpush(RedisAPIDao.Db db, String key, String[] arr){ JedisPool pool = null; Jedis jedis = null; boolean ret = false; try { pool = getPool(key); jedis = pool.getResource(); jedis.select(db.toIntValue()); if (null != arr && arr.length > 0) { jedis.del(key); long value = jedis.rpush(key, arr); if (value > 0 ) { ret = true; } } } catch (Exception e) { pool.returnBrokenResource(jedis); logger.error(e.getMessage(), e); ret = false; } finally { returnResource(pool, jedis); } return ret; }
hashs数据操作:
/** * 使用通常的方法,hmset hash * @param db * @param key * @param map * @return */ public static boolean hsetMap(RedisAPIDao.Db db, String key, Map<String, String> map) { JedisPool pool = null; Jedis jedis = null; try { pool = getPool(key); jedis = pool.getResource(); jedis.select(db.toIntValue()); jedis.hmset(key, map); } catch (Exception e) { pool.returnBrokenResource(jedis); logger.error(e.getMessage(), e); } finally { returnResource(pool, jedis); } return true; } /** * 使用批量方式操作Pipeline hash * @param db * @param key * @param map * @return */ public static boolean hmset(RedisAPIDao.Db db, String key, Map<String, String> map) { JedisPool pool = null; Jedis jedis = null; try { pool = getPool(key); jedis = pool.getResource(); jedis.select(db.toIntValue()); Pipeline pipeline = jedis.pipelined(); pipeline.hmset(key, map); pipeline.sync(); } catch (Exception e) { pool.returnBrokenResource(jedis); logger.error(e.getMessage(), e); } finally { returnResource(pool, jedis); } return true; }
hash的两种方式效果差不多(Pipeline批量操作方式稍快)。
需要jar: jedis-2.4.2.jar
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2</version> </dependency>
相关推荐
总结起来,要在Java中连接Redis集群并批量插入String类型数据,你需要: 1. 配置JedisCluster实例,包含所有集群节点的信息。 2. 创建一个Map对象,存储键值对。 3. 使用`mset`方法执行批量插入。 4. 确保所有键在...
下面将详细讨论如何在Java中操作Redis,以及相关的关键知识点。 首先,为了在Java中操作Redis,我们需要一个Java客户端库。最常用的库之一是Jedis,它是由Redis官方推荐的Java客户端。Jedis提供了丰富的API,涵盖了...
在Java开发中,Redis作为一个高性能的键值存储系统,常被用作缓存或数据库,其数据操作便捷高效。为了在不同的服务器之间迁移或者备份Redis中的数据,我们需要实现数据的导入与导出功能。本篇将详细介绍如何使用Java...
Java操作Redis是一个常见的任务,特别是在大数据处理、缓存管理和分布式系统中。Redis是一个高性能的键值存储系统,常被用于数据库、缓存和消息中间件。Jedis是Java社区广泛使用的Redis客户端,提供了丰富的API来...
1、基于1.8.0的基础上提供批量的数据操作包括get set del hmget hmset方法 2、使用方法如下: public List<V> pipelineGet(Set<K> keys){ return rt.opsForPipeline().get(keys); } public void pipelineSet...
在Java编程环境中,Redis是一个非常流行的键值...通过理解和实践这些知识点,你就能成功地在Java中实现读取和写入Redis的数据。同时,结合提供的压缩包文件,你可以在测试类中实践不同的数据类型读写,进一步加深理解。
Redis是一款高性能的键值对数据...通过Jedis或Spring的集成,我们可以轻松地在Java项目中实现各种Redis功能,包括键值存储、数据结构操作、事务处理以及消息传递。记住,正确管理和关闭资源是确保程序稳定运行的关键。
在Java中操作Redis,我们通常会借助于一些客户端库,如Jedis、Lettuce等。本示例将重点讲解如何使用Java与Redis进行基本的增删改查操作。 1. **连接Redis** 在Java中,我们需要先导入相应的库,如Jedis,然后创建...
Jedis作为Java开发者与Redis交互的主要工具,使得在Java应用中集成Redis变得简单而高效。 1. **Jedis的基本使用** - 连接Redis:Jedis实例化时需要指定Redis服务器的IP地址和端口号,可以通过`Jedis jedis = new ...
在2018年6月10日,Jedis的最新版本为2.9.0,这个版本包含了对Redis各种操作的支持,并且优化了性能,提升了稳定性。 1. **Jedis的基本使用** - **连接Redis服务器**:Jedis通过`Jedis jedis = new Jedis(...
Java操作Redis数据库是一种常见的数据交互方式,特别是在高并发、低延迟的场景中,Redis作为内存数据库的优势被广泛应用。本文将详细讲解如何使用Java与Redis进行交互,并提供源码实例。 首先,我们需要了解Redis的...
本篇文章将详细探讨如何通过Java代码实现Redis与Spring的整合,并介绍相关的操作,如增删改查、列表操作以及批量操作,以提高性能。 首先,要集成Redis到Spring项目中,我们需要在项目的`pom.xml`文件中添加Redis的...
Java版源代码和Jedis库的结合,让Java开发者可以方便地在Java应用程序中使用Redis。Jedis是Java语言的Redis客户端,它提供了丰富的API,涵盖了Redis的所有命令,包括连接管理、数据操作、事务处理、发布/订阅等功能...
在Java开发中,Redis是一个非常流行的高性能键值...总的来说,这个资料包对于初学者和有一定经验的开发者都是宝贵的资源,它可以帮助你快速上手Java与Redis的集成,理解如何在Java应用中高效地使用Redis进行数据操作。
在IT行业中,Redis作为一种高性能的键值数据存储系统,被广泛应用在缓存、数据库和消息队列等场景。本文将围绕“Redis客户端Java服务接口封装”这一主题进行深入探讨,结合给定的`RedisClientTemplate.java`文件,...
Redis提供了`redis-cli`命令行工具进行数据导入,但如果你需要在Java程序中操作,可以使用Jedis或Lettuce等Java客户端。例如,你可以通过`keys *`获取所有键,然后遍历每个键并使用`get`命令获取其对应的值,最后将...
用java写了个redis批量删除以指定内容开头的key,使用时只需要修改config.json中的配置(host,port,database,delKey:指定的key值开头),然后java -jar demo.jar运行即可
在Java环境中与Redis进行交互,通常会使用Jedis或Lettuce等客户端库。本文将详细讲解如何使用Java调用Redis,并探讨相关知识点。 一、Jedis库的使用 1. 添加依赖:在你的`pom.xml`文件中添加Jedis的Maven依赖: ``...
《Redis in Action》是一本深入介绍Redis的书籍,它涵盖了Redis的基本概念、数据结构以及如何在实际项目中高效地使用Redis。这本书通过丰富的实例和Java代码来解释Redis的各种功能,帮助开发者更好地理解和应用Redis...
Java使用Pipeline对Redis进行批量读写,主要是针对Redis的hmset和hgetall操作,能够显著提高性能。在常规操作中,每次客户端向Redis发送一个命令,都需要等待服务器的响应,这种模式在网络延迟较大的情况下效率较低...