package com.gqshao.redis.connection; import org.junit.Test; import redis.clients.jedis.*; import java.util.Arrays; import java.util.List; /** * Redis的Java客户端Jedis的八种调用方式 */ public class ConnectionTest { /** * 普通连接方式 * Simple SET: 95.437 seconds */ @Test public void testNormal() { Jedis jedis = new Jedis("192.168.3.98", 6379); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String result = jedis.set("n" + i, "n" + i); } long end = System.currentTimeMillis(); System.out.println("Simple SET: " + ((end - start) / 1000.0) + " seconds"); // 销毁 jedis.close(); } /** * 普通连接池方式 * POOL SET: 99.789 seconds * */ @Test public void testSimplePool() { JedisPool pool = new JedisPool(new JedisPoolConfig(), "192.168.3.98", 6379, 0); Jedis jedis = pool.getResource(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String result = jedis.set("np" + i, "vp" + i); } long end = System.currentTimeMillis(); pool.returnResource(jedis); System.out.println("POOL SET: " + ((end - start) / 1000.0) + " seconds"); // 销毁 jedis.close(); } /** * 事务方式(Transactions) * 通过multi(开启一个事务)、exec(执行)、discard(放弃事务) * Transaction SET: 0.926 seconds */ @Test public void testMulti() { Jedis jedis = new Jedis("192.168.3.98", 6379); long start = System.currentTimeMillis(); Transaction tx = jedis.multi(); for (int i = 0; i < 100000; i++) { tx.set("t" + i, "v" + i); } List<Object> results = tx.exec(); long end = System.currentTimeMillis(); System.out.println("Transaction SET: " + ((end - start) / 1000.0) + " seconds"); jedis.close(); } /** * 管道(Pipelining) * 异步方式,一次发送多个指令 * Pipelined SET: 0.742 seconds */ @Test public void testPipelining() { Jedis jedis = new Jedis("192.168.3.98", 6379); Pipeline pipeline = jedis.pipelined(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { pipeline.set("p" + i, "p" + i); } List<Object> results = pipeline.syncAndReturnAll(); long end = System.currentTimeMillis(); System.out.println("Pipelined SET: " + ((end - start) / 1000.0) + " seconds"); jedis.close(); } /** * 管道中调用事务 * 测试中会发生 java.lang.StackOverflowError */ @Test public void testPipeliningWithMulti() { Jedis jedis = new Jedis("192.168.3.98", 6379); long start = System.currentTimeMillis(); Pipeline pipeline = jedis.pipelined(); pipeline.multi(); // >10000次会内存溢出 /*for (int i = 0; i < 100000; i++) { pipeline.set("" + i, "" + i); }*/ for (int i = 0; i < 1000; i++) { pipeline.set("" + i, "" + i); } pipeline.exec(); List<Object> results = pipeline.syncAndReturnAll(); long end = System.currentTimeMillis(); System.out.println("Pipelined transaction: " + ((end - start) / 1000.0) + " seconds"); jedis.close(); } /** * 分布式直接连接同步调用 * 通过List<JedisShardInfo>中Info的顺序和key,计算hash,确定key为固定的Redis上 * Simple@Sharing SET: 95.106 seconds */ @Test public void testshardNormal() { List<JedisShardInfo> shards = Arrays.asList( new JedisShardInfo("192.168.3.98", 6379), new JedisShardInfo("192.168.3.98", 6380)); ShardedJedis sharding = new ShardedJedis(shards); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String result = sharding.set("sn" + i, "n" + i); } long end = System.currentTimeMillis(); System.out.println("Simple@Sharing SET: " + ((end - start) / 1000.0) + " seconds"); sharding.close(); } /** * 分布式直接连接管道异步调用,key的分配结果同 分布式直接连接同步调用 相同 * Pipelined@Sharing SET: 0.856 seconds */ @Test public void testshardPipelining() { List<JedisShardInfo> shards = Arrays.asList( new JedisShardInfo("192.168.3.98", 6379), new JedisShardInfo("192.168.3.98", 6380)); ShardedJedis sharding = new ShardedJedis(shards); ShardedJedisPipeline pipeline = sharding.pipelined(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { pipeline.set("sp" + i, "p" + i); } List<Object> results = pipeline.syncAndReturnAll(); long end = System.currentTimeMillis(); System.out.println("Pipelined@Sharing SET: " + ((end - start) / 1000.0) + " seconds"); sharding.close(); } /** * 分布式连接池同步调用 */ @Test public void testShardSimplePool() { List<JedisShardInfo> shards = Arrays.asList( new JedisShardInfo("192.168.3.98", 6379), new JedisShardInfo("192.168.3.98", 6380)); ShardedJedisPool pool = new ShardedJedisPool(new JedisPoolConfig(), shards); ShardedJedis one = pool.getResource(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { String result = one.set("spn" + i, "n" + i); } long end = System.currentTimeMillis(); pool.returnResource(one); System.out.println("Simple@Pool SET: " + ((end - start) / 1000.0) + " seconds"); pool.destroy(); } /** * 分布式连接池异步调用相同,返回管道与分布式直接连接管道异步调用 * Simple@Pool SET: 94.094 seconds */ @Test public void testShardPoolWithPipelined() { List<JedisShardInfo> shards = Arrays.asList( new JedisShardInfo("localhost", 6379), new JedisShardInfo("localhost", 6380)); ShardedJedisPool pool = new ShardedJedisPool(new JedisPoolConfig(), shards); ShardedJedis one = pool.getResource(); ShardedJedisPipeline pipeline = one.pipelined(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { pipeline.set("sppn" + i, "n" + i); } List<Object> results = pipeline.syncAndReturnAll(); long end = System.currentTimeMillis(); pool.returnResource(one); System.out.println("Pipelined@Pool SET: " + ((end - start) / 1000.0) + " seconds"); pool.destroy(); } }
相关推荐
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
包含tomcat集群redis会话共享的依赖jar包,包含有2.1.0和2.7.2两个版本,配置方式稍微有点差别,两个版本不兼容。 2.1.0版包含 commons-pool-1.6.jar jedis-2.1.0.jar tomcat-redis-session-manager-1.2-tomcat-7....
jedis调用redis源码Demo,直接导入工程就可以运行。 redis目录下有redis安装文件和入门电子书 redis64-2.8.9.zip redisbin_x32.zip Redis入门指南(JB51.NET).pdf Redis设计与实现.pdf src: FirestJedisTest.java ...
赠送jar包:jedis-2.8.0.jar; 赠送原API文档:jedis-2.8.0-javadoc.jar; 赠送源代码:jedis-2.8.0-sources.jar; 赠送Maven依赖信息文件:jedis-2.8.0.pom; 包含翻译后的API文档:jedis-2.8.0-javadoc-API文档-...
redis缓存需要的jar commons-pool.jar jedis-1.5.2.jar
spring-data-redis-2.1.5.RELEASE和jedis2.9.0,用于java使用redis开发。
Jedis操作Redis的案例,主要涉及MyBatis持久层框架、Jedis工具类、Servlet、JSP页面等技术
Java通过Jedis操作Redis,演示Redis基本数据类型,主从复制,事务。
Redis-x64-3.2.100 Jedis-2.9.0 pool2-2.42例子及jar.rar
java操作redis代码示例 ,注释,Jedis的api操作注释详细。
java开发redis的工具类。适合的redis结构为主从分区(16分区),并不适合redis_cluster
jedis通过JedisSentinelPool获取jedis操作redis,通过配置sentienl,获取sentinel连接池,通过sentinel,获取jedis信息
Redis Windows32位+64位安装包,Linux压缩包, Redis图形操作管理软件,Jedis
最新的redis连接池使用的两个jar包 jJedis3.30 jar,commons-pool2-2.9.0。测试能正常使用
01-redis-redis简介.avi,网盘文件,永久连接 02-redis-数据库应用发展历程.avi 03-redis-redis是一种Nosql数据库.avi 04-redis-redis数据库特点简介....54-redis-Jedis的使用.mp4 55-redis-redis的客户端连接工具.avi
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar
jedis-2.4.1.jar、redis.clients-3.0.1.jar、jedis-3.0.0.jar 全量包,可用!
详细描述Redis安装使用和在java中如何调用,包含jedis jar包
jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载(jedis连接redis数据库)
本文阐述了jedis与redis相对应的各类方法,方便开发者根据需求调用