Redis入门实例(Redis+Sprint+maven创建工程)

一.>创建一个maven工程应用和相关配置:Redis_study,创建工程应用过程略

1.>配置pom.xml:文件内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Redis_dom1</groupId>
  <artifactId>Redis_study</artifactId>
  <version>01</version>
  <packaging>war</packaging>
  <name>Redis_study xzh</name>
  
      <build>  
        <!-- ###########给出构建过程中所用到的插件start######## --> 
        <plugins>
            <!-- 由于maven默认使用的jdk与工程配置的jdk版本不一致,导致无法编译通过,通过该插件指定jdk版本 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-compiler-plugin</artifactId>  
                <configuration>  
                    <source>1.7</source>  
                    <target>1.7</target>  
                    <encoding>UTF-8</encoding>  
                </configuration>  
            </plugin>
            <!-- maven-surefire-plugin 是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的 surefire:test 命令会默认绑定maven执行的 test 阶段 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-surefire-plugin</artifactId>  
                <configuration>  
                    <!-- 跳过测试单元 true:跳过测试,false不跳过(默认)-->  
                    <skip>true</skip>  
                </configuration>  
            </plugin>  
        </plugins> 
        <!-- ###########给出构建过程中所用到的插件end######## --> 
    </build>  
    
    <properties>
        <spring.version>3.2.3.RELEASE</spring.version>
    </properties>
    
    <dependencies>
        <!-- junit依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- Redis客户端jedis依赖 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.0</version>
        </dependency>

        <!-- spring-data-redis依赖 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.5.0.RELEASE</version>
        </dependency>

        <!-- spring相关 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</project>

2.>配置Redis属性文件redis.properties:文件内容如下

#redis.hostName=localhost
#配置服务器ip地址
redis.hostName=***.***.***.** redis.port=6379 redis.password=redisroot redis.timeout=5000 redis.pool.maxActive=200 redis.pool.maxIdle=50 redis.pool.minIdle=20 redis.pool.maxWait=3000 redis.pool.testOnBorrow=true redis.pool.testOnReturn=true redis.pool.usePool=true

3.>配置Spring启动需初始化的上下文bean:application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
       http://www.springframework.org/schema/context  
       http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--使用注解 -->
    <context:annotation-config />

    <!-- 加载redis配置文件 -->
    <context:property-placeholder location="classpath:redis.properties" />
    <bean id="jedisPoolConfig1" class="redis.clients.jedis.JedisPoolConfig">
    </bean> 
    
    <!-- ################RedisTemplate操作模板配置begin##################### -->
    <bean id="jedisConnectionFactory"
        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
        <property name="hostName" value="${redis.hostName}"></property>
           <property name="port" value="${redis.port}"></property>
           <property name="password" value="${redis.password}"></property>
           <property name="timeout" value="${redis.timeout}"></property>
           <property name="usePool" value="${redis.pool.usePool}"></property>
        <property name="poolConfig" ref="jedisPoolConfig1"></property>
    </bean>

    <bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory" />
        <property name="keySerializer">
            <bean
                class="org.springframework.data.redis.serializer.StringRedisSerializer" />
        </property>
        <property name="valueSerializer">
            <bean
                class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
        </property>
    </bean>
    <!-- ################RedisTemplate操作模板配置end##################### -->
    
    <!-- ################JedisPool操作配置begin ##############################-->
    <!-- Redis连接池的配置 -->
    <bean id="jedisPoolConfig2" class="redis.clients.jedis.JedisPoolConfig" >
        <property name="maxTotal" value="${redis.pool.maxActive}"/> <!-- 控制一个pool可分配多少个jedis实例 --> 
        <property name="maxIdle" value="${redis.pool.maxIdle}"/> <!-- 控制一个pool最多有多少个状态为idle(空闲)的jedis实例 -->
        <property name="minIdle" value="${redis.pool.minIdle}"/> <!-- 控制一个pool最少有多少个状态为idle(空闲)的jedis实例 -->
        <property name="maxWaitMillis" value="${redis.pool.maxWait}"/><!-- 表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException -->
        <property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/><!-- 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的 --> 
        <property name="testOnReturn" value="${redis.pool.testOnReturn}"/>
    </bean>
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
        <constructor-arg index="0" ref="jedisPoolConfig2"/>
        <constructor-arg index="1" value="${redis.hostName}" />
        <constructor-arg index="2" value="${redis.port}" />
        <constructor-arg index="3" value="${redis.timeout}" />
        <!--Redis密码-->
        <constructor-arg index="4" value="${redis.password}" />
    </bean>
    <!-- ################JedisPool操作配置end ################################-->
    
</beans>  

二.>编写测试代码

1.>编写Spring单位测试加载基础类:BaseTest.java

package redis;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.ContextConfiguration;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//指定bean注入的配置文件
@ContextConfiguration(locations = {"classpath:application.xml"})
//使用标准的JUnit @RunWith 注释运行Spring Test Runner
@RunWith(SpringJUnit4ClassRunner.class)
public class BaseTest extends AbstractJUnit4SpringContextTests {}

2.>编写测试类:RedisTest.java

package redis;
import java.util.concurrent.TimeUnit;
import java.util.Map;
import java.util.HashMap;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
/**
 * 
 * @ClassName: RedisTest 
 * @Description: TODO
 * @author xzh
 * @date 20170323 
 *
 */
public class RedisTest extends BaseTest 
{
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private JedisPool jedisPool;
    public Map<String,String> student = new HashMap<String,String>();
    /**
     * 测试插入与获取Redis的数据
     * @Title: testPutAndGet 
     * @Description: TODO
     * @throws
     */
    @Test
    public void testPutAndGet() 
    {
        System.out.println(this.getClass().getName()+"testPutAndGet");
        redisTemplate.opsForHash().put("user", "name", "rhwayfun");
        Object object = redisTemplate.opsForHash().get("user", "name");
        System.out.println(object);
    }
    /**
     * 测试Redis作为缓存的例子
     * @Title: testCache 
     * @Description: TODO
     * @throws InterruptedException
     * @throws
     */
    @Test
    public void testCache() throws InterruptedException 
    {
        //-------jedisPool配置使用--redisTemplate--进行操作Start-------------//
        System.out.println("-------jedisPool配置使用--redisTemplate--进行操作Start-------------");
        // 插入一条数据
        redisTemplate.opsForHash().put("user", "name", "rhwayfun");
        // 设置失效时间为6秒
        redisTemplate.expire("user", 6, TimeUnit.SECONDS);
        // 3秒后获取
        Thread.sleep(3000);
        Object object = redisTemplate.opsForHash().get("user", "name");
        System.out.println("3秒后:" + object);
        // 7秒后获取
        Thread.sleep(4000);
        object = redisTemplate.opsForHash().get("user", "name");
        System.out.println("7秒后:" + object);
        System.out.println("-------jedisPool配置使用--redisTemplate--进行操作end---------------
");
        //-------jedisPool配置使用--redisTemplate--进行操作end-------------//
        
        //-------jedisPool配置使用----Jedis----进行操作Start-------------//
        System.out.println("-------jedisPool配置使用Jedis的进行操作Start-------------");
        Jedis jedis = jedisPool.getResource();
        System.out.println("服务器IP地址:"+jedis.configGet("bind"));
        /*hash api:hset*/
        jedis.hset("me", "name", "xzh");
        System.out.println("jedis.hset(me, name, xzh):" + jedis.hget("me", "name"));
        
        /*hash api:hmset*/
        student.put("naem","xzh");
        student.put("stid", "1");
        jedis.hmset("student", student);
        
        //关闭连接
        if(jedis != null)
        {
            student.clear();
            jedisPool.close();
        }
        System.out.println("-------jedisPool配置使用Jedis的进行操作end--------------
");
        //-------jedisPool配置使用----Jedis----进行操作end-------------//
    }
}

运行结果:运行之前先搭建号redis缓存服务,右键点击方法名,选择则“Run As”→“JUnit Test”即可

......
-------jedisPool配置使用--redisTemplate--进行操作Start-------------
3秒后:rhwayfun
7秒后:null
-------jedisPool配置使用--redisTemplate--进行操作end---------------

-------jedisPool配置使用Jedis的进行操作Start-------------
服务器IP地址:[bind, 127.0.0.1 192.168.248.85]
jedis.hset(me, name, xzh):xzh
-------jedisPool配置使用Jedis的进行操作end--------------

redis.RedisTesttestPutAndGet
rhwayfun

右键点击方法名,选择则“Run As”→“JUnit Test”即可

原文地址:https://www.cnblogs.com/zhabayi/p/6605717.html