一、搭建Redis环境 3.2.1
Redis gitHub 下载地址

下载之后直接解压得到以下目录结构

点击redis-server.exe即可启动Redis数据库

输出信息:启动成功、端口号、pid 即启动成功。


二、搭建开发环境

1>搭建springmvc支持

<!--搭建springmvc--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.4.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.8.4</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.4</version></dependency>

2>集成Redis

<!--集成Redis--><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.7.5.RELEASE</version></dependency><!--Redis客户端--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency>

3>配置Redis:spring-redis.xml

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.3.xsd"><!--引入redis配置--><context:property-placeholderlocation="classpath:redis.properties"ignore-unresolvable="true"/><!--Redis配置--><beanid="jedisPoolConfig"class="redis.clients.jedis.JedisPoolConfig"><propertyname="maxTotal"value="${redis.pool.maxTotal}"/><propertyname="maxIdle"value="${redis.pool.maxIdle}"/><propertyname="maxWaitMillis"value="${redis.pool.maxWaitMillis}"/><propertyname="testOnBorrow"value="${redis.pool.testOnBorrow}"/></bean><!--redis单节点数据库连接配置--><beanid="jedisConnectionFactory"class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><propertyname="hostName"value="${redis.ip}"/><propertyname="port"value="${redis.port}"/><!--<propertyname="password"value="${redis.pass}"/>--><propertyname="poolConfig"ref="jedisPoolConfig"/></bean><!--redisTemplate配置,redisTemplate是对Jedis的对redis操作的扩展,有更多的操作,封装使操作更便捷--><beanid="redisTemplate"class="org.springframework.data.redis.core.RedisTemplate"><propertyname="connectionFactory"ref="jedisConnectionFactory"/></bean></beans>

4>配置redis.properties

redis.pool.maxTotal=105redis.pool.maxIdle=10redis.pool.maxWaitMillis=5000redis.pool.testOnBorrow=trueredis.ip=127.0.0.1redis.port=6379


三、配置Servlet

此处不在web.xml中配置,采取硬编码方式

1.DispatchServlet拦截器

packagecom.redis.init;importorg.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;/***配置拦截器*@authorhc**/publicclassDispatcherServletInitextendsAbstractAnnotationConfigDispatcherServletInitializer{/***配置应用上下文*/@OverrideprotectedClass<?>[]getRootConfigClasses(){returnnewClass<?>[]{RootConfig.class};}/***配置web上下文*/@OverrideprotectedClass<?>[]getServletConfigClasses(){returnnewClass<?>[]{WebConfig.class};}@OverrideprotectedString[]getServletMappings(){returnnewString[]{"/"};}}

2.应用上下文WebConfig

packagecom.redis.init;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;importorg.springframework.context.annotation.FilterType;importorg.springframework.context.annotation.ImportResource;importorg.springframework.context.annotation.ComponentScan.Filter;importorg.springframework.stereotype.Controller;importorg.springframework.web.servlet.config.annotation.EnableWebMvc;/***应用上下文*@authorhc**/@Configuration@ComponentScan(basePackages={"com.redit"},excludeFilters={@Filter(type=FilterType.ANNOTATION,value=Controller.class),@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)})@ImportResource("classpath:spring-*.xml")//引入redis配置文件publicclassRootConfig{}

3.web上下文

packagecom.redis.init;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.ViewResolver;importorg.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;importorg.springframework.web.servlet.config.annotation.EnableWebMvc;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;importorg.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration@EnableWebMvc@ComponentScan({"com.web"})publicclassWebConfigextendsWebMvcConfigurerAdapter{/***配置视图解析器*@return*/@BeanpublicViewResolverviewResolver(){InternalResourceViewResolverresolver=newInternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".html");resolver.setExposePathVariables(true);returnresolver;}/***配置静态资源管理器*/@OverridepublicvoidconfigureDefaultServletHandling(DefaultServletHandlerConfigurerconfigurer){super.configureDefaultServletHandling(configurer);configurer.enable();}}

4.Controller

packagecom.redis.web;importjava.util.List;importjavax.annotation.Resource;importorg.springframework.data.redis.core.ListOperations;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("user")publicclassUserController{@Resource(name="redisTemplate")privateListOperations<String,String[]>listUser;@RequestMapping("/list")@ResponseBodypublicList<String[]>list(){List<String[]>list=listUser.range("user",0,-1);returnlist;}@RequestMapping("/add")@ResponseBodypublicvoidadd(String...user){listUser.leftPush("user",user);}}

基本配置完毕,待测试


四、使用Jedis客户端来测试

1.启动redis服务器

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>2.5</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.4</version><scope>test</scope></dependency>

junit尽量用高版本的,不然测试的时候会有版本冲突

2.配置参数

<!--配置Jedis链接服务器参数--><beanid="poolConfig"class="redis.clients.jedis.JedisPoolConfig"><propertyname="maxTotal"value="4096"/><propertyname="maxIdle"value="200"/><propertyname="maxWaitMillis"value="3000"/><propertyname="testOnBorrow"value="true"/><propertyname="testOnReturn"value="true"/></bean><beanid="jedisPool"class="redis.clients.jedis.JedisPool"><constructor-argindex="0"ref="poolConfig"/><constructor-argindex="1"value="127.0.0.1"/><constructor-argindex="2"value="6379"type="int"/></bean>

3.测试

packageredis_demo;importorg.junit.Assert;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;importorg.springframework.test.context.junit4.SpringJUnit4Cla***unner;importredis.clients.jedis.Jedis;importredis.clients.jedis.JedisPool;/***使用Jedis来测试redis*@authorhc**/@RunWith(SpringJUnit4Cla***unner.class)@ContextConfiguration(locations="classpath:spring-redis.xml")publicclassRedisTestByJedisextendsAbstractJUnit4SpringContextTests{@AutowiredprivateJedisPooljedisPool;@TestpublicvoidbasicTest(){Jedisjedis=jedisPool.getResource();//存值jedis.set("user.name","aaa");jedis.set("user.pass","123");//取值Stringname=jedis.get("user.name");Stringpass=jedis.get("user.pass");//断言Assert.assertEquals("aaa",name);//Assert.assertEquals("1234",pass);//错误Assert.assertEquals("123",pass);jedis.del("user.name");Booleanresult=jedis.exists("user.name");Assert.assertEquals(false,result);result=jedis.exists("user.pass");Assert.assertEquals(true,result);jedis.close();}}

显示通过测试