`

redis 实践笔记详解(二)(java篇,jedis-2.8.0.jar和spring2.5的整合)

 
阅读更多

 

提起spring,redis,大家都在使用spring-data-redis;无可否认,这很好;

现状:  公司的spring版本太低了;2.5.。。古董,升级,涉及面太多了,伤筋动骨;

剑走偏锋,咱们今天曲线救国,直接spring 2.5.6整合最新版本的redis(jedis-2.8.0.jar);

任何未写版本的高谈阔论都是耍流氓;因此一定记得注明版本!!!我的版本是

 

spring-2.5.6.jar

jedis-2.8.0.jar

 

 

第一:引入jar包;

第二:配置redis参数:system.db.properties;

 

写道
redis.pool.maxTotal=1024
redis.pool.maxIdle=200
redis.pool.minIdle=5
redis.pool.maxWaitMillis=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
redis.host=127.0.0.1
redis.port=6379
redis.timeout=1000

 

第三:配置spring的文件:context.redis.xml

注意:我们知道commons-pool2 的maxactive,maxWait已经更改命名。

JedisPoolConfig继承的就是我们熟悉的org.apache.commons.pool.impl.GenericObjectPool.Config。
   jedis的大神们做扩展时,能不能考虑下代码的兼容性。。。。(一个坑,引用于万能的网友)我的配置是最新版;2016-05-31

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
	"http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName">
    <!-- 加载redis配置文件   已在system.db.properties
    <context:property-placeholder location="classpath:redis.properties"/>
    -->
    
    <!-- redis连接池的配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
      <property name="maxTotal">
      	<value>${redis.pool.maxTotal}</value>
      </property>
      <property name="maxIdle" value="${redis.pool.maxIdle}"/>
      <property name="minIdle" value="${redis.pool.minIdle}"/>
      <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/>
      <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/>
      <property name="testOnReturn" value="${redis.pool.testOnReturn}"/>
    </bean>
    
    <!-- redis的连接池pool,不是必选项:timeout/password  -->
    <bean id = "jedisPool" class="redis.clients.jedis.JedisPool">
      <constructor-arg index="0" ref="jedisPoolConfig"/>
      <constructor-arg index="1" value="${redis.host}"/>
      <constructor-arg index="2" value="${redis.port}" type="int"/>
      <constructor-arg index="3" value="${redis.timeout}" type="int"/>
      <!--  <constructor-arg index="4" value="${redis.password}"/>-->
    </bean>
    
    <bean id = "redisService" class="com.hh.common.tools.RedisService">
    </bean>
  </beans>

 第四,工具类RedisService;封装了add,get,以及超时的方法;

package com.hh.common.tools; 

import java.util.Set;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 *  <p>功能:封装redis 缓存服务器服务接口
 *   时间 2016年5月31日 下午3:36:21	
 *  @version 1.0 
 */
public class RedisService {

    /**
     * 通过key删除(字节)
     * @param key
     */
    public void del(byte [] key){
        this.getJedis().del(key);
    }
    /**
     * 通过key删除
     * @param key
     */
    public void del(String key){
        this.getJedis().del(key);
    }

    /**
     * 添加key value 并且设置存活时间(byte)
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(byte [] key,byte [] value,int liveTime){
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    }
    /**
     * 添加key value 并且设置存活时间
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(String key,String value,int liveTime){
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    }
    /**
     * 添加key value
     * @param key
     * @param value
     */
    public void set(String key,String value){
        this.getJedis().set(key, value);
    }
    /**添加key value (字节)(序列化)
     * @param key
     * @param value
     */
    public void set(byte [] key,byte [] value){
        this.getJedis().set(key, value);
    }
    /**
     * 获取redis value (String)
     * @param key
     * @return
     */
    public String get(String key){
        String value = this.getJedis().get(key);
        return value;
    }
    /**
     * 获取redis value (byte [] )(反序列化)
     * @param key
     * @return
     */
    public byte[] get(byte [] key){
        return this.getJedis().get(key);
    }

    /**
     * 通过正则匹配keys
     * @param pattern
     * @return
     */
    public Set<String> keys(String pattern){
        return this.getJedis().keys(pattern);
    }

    /**
     * 检查key是否已经存在
     * @param key
     * @return
     */
    public boolean exists(String key){
        return this.getJedis().exists(key);
    }
    /**
     * 清空redis 所有数据
     * @return
     */
    public String flushDB(){
        return this.getJedis().flushDB();
    }
    /**
     * 查看redis里有多少数据
     */
    public long dbSize(){
        return this.getJedis().dbSize();
    }
    /**
     * 检查是否连接成功
     * @return
     */
    public String ping(){
        return this.getJedis().ping();
    }
    /**
     * 获取一个jedis 客户端
     * @return
     */
    private Jedis getJedis(){
        if(jedis == null){
            return jedisPool.getResource();
        }
        return jedis;
    }
    private RedisService (){

    }
    //操作redis客户端
    private static Jedis jedis; 
    public JedisPool getJedisPool() {
		return jedisPool;
	}
	public void setJedisPool(JedisPool jedisPool) {
		this.jedisPool = jedisPool;
	}
	private JedisPool jedisPool;

        //action调用完了,一定要关掉!
	public void close(){
		if(jedis != null){
			System.out.println("关闭一次redis连接");
			jedis.close();
			jedis=null;
        }
	}

}

 

 

0
0
分享到:
评论
3 楼 yesjava 2016-11-29  
private Jedis getJedis(){ 
        if(jedis == null){ 
            return jedisPool.getResource(); 
        } 
        return jedis; 
    } 

获取jedis单例这个地方代码有问题,应该是jedis=jedisPool.getResource(); 
2 楼 alafqq 2016-06-01  
spring-data-redis只在高版本有。。
1 楼 layznet 2016-05-31  
spring-data-redis已经做了上面的事

相关推荐

    commons-pool.jar,jedis-2.4.2.jar

    在这个场景下,"commons-pool.jar"和"jedis-2.4.2.jar"是两个关键的Java库,它们允许开发者在Java应用中便捷地操作Redis。 `commons-pool.jar`是Apache Commons Pool项目的一部分,它提供了一个通用的对象池服务。...

    jedis-2.8.0.jar 下载

    **Jedis 2.8.0 - Redis 链接器与 Java 开发** Jedis 是一个用 Java 编写的高效、轻量级的 Redis 客户端,它提供了丰富的 Redis 指令集,使得在 Java 应用中集成 Redis 数据库变得简单而便捷。在 2016 年发布的 ...

    jedis-2.9.0.jar

    Jedis提供了全面的Redis命令支持,使Java开发者能够方便地在应用程序中集成和操作Redis。Jedis-2.9.0是该库的一个稳定版本,它包含了对Redis各种功能的实现,包括但不限于连接管理、事务处理、发布/订阅、Lua脚本...

    jedis-2.8.0.jar

    该jar包用于连接Redis,编程语言为Java。

    jedis-2.4.1.jar、redis.clients-3.0.1.jar、jedis-3.0.0.jar

    jedis-2.4.1.jar、redis.clients-3.0.1.jar、jedis-3.0.0.jar 全量包,可用!

    jedis-3.3.0.jar文件

    总结来说,"jedis-3.3.0.jar"和"commons-pool2-2.9.0.jar"的结合使用,为Java开发者提供了高效、稳定的Redis连接和资源管理方案,通过Jedis的API可以便捷地操作Redis,而Apache Commons Pool 2则确保了连接资源的...

    spring-data-redis-1.6.0.RELEASE.jar + jedis-2.7.2.jar.rar

    包含Java说明文件、配置代码、redis相应版本的Jar 1、代码片段要求的框架为:SpringMVC,但原理都是一样的,采用其他方式也可以。 2、RedisMng为简单封装的接口,不封装,直接采用redisTemplate也可以。

    jedis-2.1.0.jar+commons-pool-1.6.jar

    总的来说,"jedis-2.1.0.jar+commons-pool-1.6.jar"组合是Java开发中用于高效连接和管理Redis的强大工具,通过连接池优化了资源利用,提升了应用性能。在实际开发中,开发者应根据项目的具体需求和资源限制,合理...

    java中redis的jar包jedis-2.8.0.jar

    总结来说,Jedis 2.8.0是Java开发者与Redis交互的重要工具,通过它,我们可以便捷地利用Redis的各种功能,提升应用的性能和可扩展性。在实际使用中,需要根据项目需求进行适当的配置和优化,以达到最佳效果。

    jedis-2.8.0-API文档-中文版.zip

    标签:clients、jedis、redis、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...

    jedis-3.0.0.jar、jedis-3.0.0-javadoc.jar、jedis-3.0.0-sources.jar

    开发者可以通过导入这个JAR,直接在Java程序中使用Jedis来执行Redis命令,例如设置和获取键值、执行事务、操作列表、集合和有序集合等。 2. **jedis-3.0.0-javadoc.jar**:这个文件包含了Jedis库的API文档,提供了...

    jedis-2.9.0.jar+commons-pool2-2.4.2.jar

    `jedis-2.9.0.jar`是Jedis的特定版本,它是Java开发人员连接和操作Redis的主要库。Jedis提供了丰富的API,支持多种Redis命令,如字符串、哈希、列表、集合、有序集合、发布/订阅、事务、脚本以及Geo等功能。它不仅...

    jedis-3.2.0.jar + commons-pool2-2.6.2.jar

    标题中的"jedis-3.2.0.jar + commons-pool2-2.6.2.jar"提到了两个关键的Java库:Jedis和Apache Commons Pool2。Jedis是Java编程语言中广泛使用的Redis客户端,而Apache Commons Pool2则是一个对象池实现,用于有效地...

    最新redis架包jedis-2.9.0.jar和commons-pool2-2.4.2.jar

    总结起来,"最新redis架包jedis-2.9.0.jar和commons-pool2-2.4.2.jar"提供了高效连接管理和全面的Redis操作功能,是Java开发者与Redis服务器进行通信的强大工具。在实际项目中,结合这两个组件,可以构建出高性能、...

    redis缓存需要的jar commons-pool.jar jedis-1.5.2.jar

    在Java开发中,为了与Redis进行交互,通常需要引入相关的Java库,如`commons-pool.jar`和`jedis-1.5.2.jar`。 `commons-pool.jar`是Apache Commons的一个组件,全称为Apache Commons Pool,它提供了一种对象池化...

    jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载(jedis连接redis数据库)

    标题"jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载(jedis连接redis数据库)"指的是两个Java库的下载信息,用于连接Redis数据库。其中,`jedis-2.9.0.jar`是Jedis的特定版本,它是Java开发人员用来操作Redis的...

    nginx1.8-tomcat7-redis3.2-session配置和jar包

    本文件包经过本人亲测能用,支持nginx1.8.1和tomcat7.0.63和Redis-x64-3.2.100版, 包含tomcat集群redis会话共享的依赖jar包,包含有2.1.0和2.7.2两个版本,配置方式稍微有点差别,两个版本不兼容。 2.1.0版包含 ...

    tomcat-redis-session-manage-tomcat7.jar,jedis-2.5.2.jar,commons-pool2-2.2.jar

    【标题】中的“tomcat-redis-session-manage-tomcat7.jar”是一个专门为Tomcat7设计的Redis会话管理器的Java档案,它允许Tomcat将用户的会话数据存储在Redis缓存系统中,而非传统的内存或硬盘。Redis是一个开源的、...

    jedis-2.9.0.jar及连接池分享

    Jedis是Java开发的一款高效的Redis客户端库,广泛应用于与Redis服务器进行交互的Java项目中。在本资源包中,我们提供了jedis-2.9.0.jar,这是Jedis的一个稳定版本,支持多种Redis操作,如键值操作、事务处理、发布...

Global site tag (gtag.js) - Google Analytics