使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip
如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip
一般的,使用Jedis都需要使用连接池来获取连接
一、连接池的配置和使用
首先在spring中配置jedis连接池的一些配置信息
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.maxTotal}"></property> <property name="maxIdle" value="${redis.maxIdle}"></property> <property name="minIdle" value="${redis.minIdle}"></property> <property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property> <property name="testOnBorrow" value="${redis.testOnBorrow}"></property> <property name="testOnReturn" value="${redis.testOnReturn}"></property> <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}"></property> <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"></property> <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"></property> </bean>
这些配置的具体描述信息可以简单的提一下:
maxTotal:最大连接数
maxIdle:最大空闲连接数
minIdle:最小空闲连接数
maxWaitMillis:获取连接时最大等待毫秒数,
testOnBorrow:获取连接时检查有效性
testOnRetrun:return给pool时,是否提前进行validate操作
minEvictableIdleTimeMillis:一个对象至少停留在idle状态的最短时间,才能被Idle, object evitor扫描并驱逐
numTestsPerEvictionRun:idle,object,evitor每次扫描对象的数
timeBetweenEvictionRunsMillis:释放连接的扫描间隔
配置完jedis连接池配置之后就可以配置连接池了
<bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1" value="${redis.hostName}" type="java.lang.String"/> <constructor-arg index="2" value="${redis.port}" type="int" /> <constructor-arg index="3" value="${redis.timeout}" type="int" /> <constructor-arg index="4" value="${redis.auth}" type="java.lang.String"/> </bean>
这里配置了jedis的连接池配置,名称地址以及端口密码等
。连接池就算是配好了,接下来我们就可以配置获取连接的类了:
import redis.clients.jedis.Jedis; import redis.clients.util.Pool; public class Test { private Pool<Jedis> redisPool; public Pool<Jedis> getRedisPool() { return redisPool; } public void setRedisPool(Pool<Jedis> redisPool) { this.redisPool = redisPool; } public Jedis getJedis() { try { Jedis jedis = redisPool.getResource(); if (jedis == null) { return null; } return jedis; } catch (Exception e) { } return null; } public void release(Jedis jedis) { if (jedis != null) { jedis.close(); } } public void init(){ } public static void main(String[] args) { } }
这样我们可以写一个工具类来管理jedis的获取以及关闭等:
public static Jedis getJedis(Integer index){
Jedis jedis = null;
JedisClient jedisClient = (JedisClient)ctx.getBean("jedisClient");
if(null!=jedisClient){
jedis = jedisClient.getJedis();
}
try{
jedis.select(index);
}catch(Exception e){
jedis.select(JedisDBEnum.DEFAULT.getIndex().intValue());
log.info("getJedis index:"+index+" and default select db 0",e);
}
return jedis;
}
这一段很简单就是获取一个jedis连接,然后选择几号库,当然,用完jedis之后需要关闭连接
public static void closeJeids(Jedis jedis){
try{
if(null!=jedis){
jedis.close();
}
}catch(Exception e){
}
}
这就是通过jedis连接池获取jedis连接的全部流程了
获取到jedis之后就可以往jedis里面放数据或取数据了,在redis中放对象可以将对象序列化或者是转换成map放入,下面先列出第二种方式的例子
public class SeriaUtil { /** * 将对象转为map,Integer, BigDecimal Double ,Long默认值为空 * @param clazz * @param obj * @return */ @SuppressWarnings("rawtypes") public static Map<String , String> getMapfromObject(Class<?> clazz , Object obj){ Map<String , String > map = new HashMap<String , String>(); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerDefaultValueProcessor(Integer.class, new DefaultValueProcessor() { @Override public Object getDefaultValue(Class arg0) { return null; } }); jsonConfig.registerDefaultValueProcessor(BigDecimal.class, new DefaultValueProcessor() { @Override public Object getDefaultValue(Class arg0) { return null; } }); jsonConfig.registerDefaultValueProcessor(Long.class, new DefaultValueProcessor() { @Override public Object getDefaultValue(Class arg0) { return null; } }); jsonConfig.registerDefaultValueProcessor(Double.class, new DefaultValueProcessor() { @Override public Object getDefaultValue(Class arg0) { return null; } }); JSONObject jsonObj = JSONObject.fromObject(obj , jsonConfig); Iterator it = jsonObj.keys(); while(it.hasNext()){ String key = String.valueOf(it.next()) ; Object data = jsonObj.get(key); if(null != data &&!(data instanceof JSONNull)){ map.put(key, data.toString()); }else{ map.put(key, ""); } } return map ; } @SuppressWarnings("unchecked") public static <T> T getObjet(Jedis jedis , String key , Class<T> clazz){ Map<String , String> map =jedis.hgetAll(key); if(map == null || map.isEmpty() ){ return null ; } Map<String , String > nMap = new HashMap<String , String>(); for(String keys: map.keySet()){ if(map.get(keys)!=null && !map.get(keys).equals("")){ nMap.put(keys, map.get(keys)); } } T t = null ; try { if(nMap == null || nMap.isEmpty()){ return null ; } Constructor<?> c = clazz.getConstructor(Map.class); t = (T) c.newInstance(map); } catch (Exception e) { JSONObject json = JSONObject.fromObject(map); t = (T) JSONObject.toBean(json,clazz); } return t ; } }
public class JedisTest { public static void main(String[] args) { ApplicationContext ap = new ClassPathXmlApplicationContext("main/java/conf/applicationContext.xml"); JedisClient jedisClient = (JedisClient)ap.getBean("jedisClient"); Jedis jedis = jedisClient.getJedis(); jedis.select(0); jedis.sadd("name:123", "dengwei"); jedis.del("name:123"); SeriaBean bean = new SeriaBean() ; bean.setAge(23); bean.setName("dengwe"); jedis.hmset("bean", SeriaUtil.getMapfromObject(SeriaBean.class, bean)); SeriaBean bb = SeriaUtil.getObjet(jedis, "bean", SeriaBean.class); System.out.println(bb); jedis.close(); } }
相关推荐
而Java作为广泛使用的编程语言,通过Jedis库与Redis进行交互,实现了对Redis丰富的操作功能。本文将深入探讨如何使用Java和Jedis来操作Redis,涉及Redis的基本数据类型、主从复制以及事务处理。 首先,让我们了解...
redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现 redis实现分布式锁(java/jedis),其中包含工具方法以及使用demo 本资源是利用java的jedis实现
Jedis是Java社区广泛使用的Redis客户端库,提供了丰富的API来与Redis服务器进行交互。本文将深入探讨如何使用Jedis进行Redis操作,并通过具体的代码示例来详细解析其API的使用。 首先,我们需要了解如何添加Jedis...
通过整合MyBatis、Jedis、Servlet和JSP,我们可以构建一个完整的Redis数据存取和展示的应用。在实际项目中,还需要考虑错误处理、资源关闭、连接池管理等问题,以确保系统的稳定性和性能。同时,Jedis的操作可以封装...
**Jedis操作Redis服务实例详解** ...总之,Jedis是Java开发者操作Redis的重要工具,通过其提供的API,我们可以实现各种复杂的数据操作。理解并熟练掌握Jedis的使用,将有助于我们在开发中更好地利用Redis的高效特性。
Jedis是Java的一个开源客户端,专门用于连接和操作Redis服务器。 首先,让我们详细了解一下Spring Data。Spring Data是一个模块化的项目,它的主要目标是通过提供统一的API来减少数据访问层的开发工作。这个框架...
Jedis 是 Redis 官网首选的 Java 客户端开发包,通过 Jedis,我们可以在 Java 中使用 Redis。Jedis 的使用非常简单,首先需要引入相关的 jar 包,然后创建连接实例,最后使用 Jedis 操作 Redis。 Redis 的特点 ...
jedis通过JedisSentinelPool获取jedis操作redis,通过配置sentienl,获取sentinel连接池,通过sentinel,获取jedis信息
综上所述,这个压缩包提供了全面的Redis部署选项和Java开发工具,无论是在Windows还是Linux环境下,都可以快速搭建和管理Redis服务器,并使用Jedis进行高效的数据操作。对于初学者和开发者来说,这是一个非常实用的...
Jedis是Java社区广泛使用的Redis客户端,它提供了丰富的API来操作Redis服务器。下面我们将深入探讨如何使用Jedis进行Redis操作,并通过实际示例来加深理解。 1. **安装与依赖** 首先,要在Java项目中使用Jedis,...
### Java Redis 使用之利用 Jedis 实现 Redis 消息队列 #### 一、引言 随着互联网应用的发展,消息队列在系统架构中的地位愈发重要。它不仅可以提高系统的响应速度,还可以帮助开发者构建出更加健壮、可扩展的应用...
- 连接Redis:Jedis实例化时需要指定Redis服务器的IP地址和端口号,可以通过`Jedis jedis = new Jedis("localhost", 6379);`建立连接。 - 基本操作:包括设置键值对(`set(key, value)`)、获取键值(`get(key)`)...
Jedis是Java开发Redis应用的基础,通过它,开发者可以充分利用Redis的强大功能,提升应用程序的性能和可扩展性。无论是简单的键值存储,还是复杂的分布式数据结构操作,Jedis都能提供简洁而高效的解决方案。
jedis.jar redis.jar java缓存 jedis.jar redis.jar java缓存 jedis.jar redis.jar java缓存 jedis.jar redis.jar java缓存
在Java开发中,Redis是一个广泛使用的高性能键值存储系统,而Jedis是Java语言与Redis进行交互的主要客户端库。本文将深入探讨如何在Java框架中使用Jedis来操作Redis,包括单机版和集群版的设置,以及如何设计一个...
Java使用Jedis操作Redis服务器的实例代码 title: Java使用Jedis操作Redis服务器的实例代码 本篇文章主要介绍了Java使用Jedis操作Redis服务器的实例代码,包括Maven配置、简单应用、JedisPool的实现和使用pipeline...
jedis调用redis源码Demo,直接导入工程就可以运行。 redis目录下有redis安装文件和入门电子书 redis64-2.8.9.zip redisbin_x32.zip Redis入门指南(JB51.NET).pdf Redis设计与实现.pdf src: FirestJedisTest.java ...
而Jedis是Java语言与Redis交互的主要客户端库,提供了丰富的API供开发者进行操作。本示例主要讨论如何使用Jedis来操作Redis集群。 首先,要理解Redis集群的基本概念。Redis集群是通过将数据分散在多个节点上来实现...
**标题与描述解析** 标题"jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载...通过理解和正确使用Jedis及Apache Commons Pool,Java开发者可以高效地与Redis数据库进行交互,实现数据存储、检索和缓存等多种功能。
在Java开发中,我们通常使用Jedis作为客户端库来与Redis进行交互。本文将深入探讨Redis、Jedis以及Spring Data Redis这三个核心概念,并结合提供的jar包版本,解析它们在实际开发中的应用。 首先,Redis是一个开源...