Java中使用Redis(jedis连接池连接redis/spring集成redis)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38364973/article/details/80061008
开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动
1、下载最新驱动包:https://mvnrepository.com/artifact/redis.clients/jedis;
jedis-2.9.0.jar;commons-pool2-2.4.2.jar;(Apache连接池)
2、将jar包放入lib中
3、import redis.clients.jedis.Jedis;
4、//连接本地的 Redis 服务

Jedis jedis = new Jedis("localhost");


一、使用jedis连接池连接redis

1、配置文件.properties


2、连接类

    private static JedisPool pool; 
    //静态代码初始化池配置    
    static {    
    try{   
        Properties props = new Properties();  
            props.load(RedisTest.class.getClassLoader().getResourceAsStream("redis.properties"));  
            //创建jedis池配置实例    
            JedisPoolConfig config = new JedisPoolConfig();     
            //设置池配置项值       
            config.setMaxTotal(Integer.valueOf(props.getProperty("jedis.pool.maxActive")));      
            config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle")));      
            config.setMaxWaitMillis(Long.valueOf(props.getProperty("jedis.pool.maxWait")));      
            config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow")));      
            config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn")));      
            //根据配置实例化jedis池    
            pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")));   
    }catch (IOException e) {  
    e.printStackTrace();  
    }  
    }
    /**获得jedis对象*/  
    public static Jedis getJedisObject(){  
    return pool.getResource();  
    }  
    /**归还jedis对象*/  
    public static void recycleJedisOjbect(Jedis jedis){  
    pool.returnResource(jedis);    
    }
3、实现类
    Jedis jedis = getJedisObject();//获得jedis实例                    
    //获取jedis实例后可以对redis服务进行一系列的操作     
    System.out.println(jedis.get("runoobkey"));     

    recycleJedisOjbect(jedis); //将 获取的jedis实例对象还回迟中

二、spring集成redis

1、下载spring-data-redis-***.RELEASE.jar spring-data-commons-***.RELEASE.jar 包  aopalliance-1.0 .jar

(版本不同将会导致不兼容问题,常常会出现NoSuchMethodError异常,我使用spring-data-redis-1.8.7.RELEASE.jar、spring-data-commons-1.8.4.RELEASE.jar,spring使用4.3.12)  

下载地址:https://repo.spring.io
Artifact——libs-release-local——org——springframework——data——spring-data-redis
2、工作目录下创建配置文件redis.properties(配置见上图)
3、修改spring配置文件applicationContext.xml
<!--   引入多个配置文件 -->  
<bean id="configurer"  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    
<property name="locations">  
<list> 
<value>classpath:redis.properties</value>  
</list>    
</property>   
</bean>  
  
 <!-- jedis pool配置 -->   
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">    
<!--最大连接数 -->
<property name="maxTotal" value="${jedis.pool.maxActive}" />
<!--最大空闲连接数 -->
<property name="maxIdle" value="${jedis.pool.maxIdle}" />
<!--最大等待时间 -->
<property name="maxWaitMillis" value="${jedis.pool.maxWait}" />
<!--定时对线程池中空闲的链接进行validateObject校验 -->
<property name="testWhileIdle" value="true" /> 
<property name="testOnBorrow" value="true" />
<!--在进行returnObject对返回的connection进行validateObject校验 -->
<property name="testOnReturn" value="true" />   
</bean>

<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">    
<property name="hostName" value="${redis.ip}" />    
<property name="port" value="${redis.port}" />     
<constructor-arg index="0" ref="poolConfig" />  
</bean>

<!--  redis模板类 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">   
<property name="connectionFactory"   ref="connectionFactory" />   
<property name="keySerializer">   
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />   
</property>      
<property name="valueSerializer">   
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
</property>   
<property name="hashKeySerializer">     
  <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>     
</property>   
<property name="hashValueSerializer">   
  <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>     
</property> 
 </bean>


<!--自定义redis工具类,在需要缓存的地方注入此类  -->  
<bean id="redisUtil" class="com.util.RedisTemplateUtil">  
<property name="redisTemplate" ref="redisTemplate" />  
</bean>
5、使用
ApplicationContext context=new ClassPathXmlApplicationContext("classpath:config/spring-dao.xml");  
RedisTemplateUtil redisUtil=(RedisTemplateUtil) context.getBean("redisUtil");  
redisUtil.set("age", "888");

System.out.println(redisUtil.get("age"));


三、redis哨兵配置

1、redis.properties文件新增


2、spring配置文件.xml修改


展开阅读全文

没有更多推荐了,返回首页