koushr 2018-10-04

1)环境前期准备
2)创建基于maven的工程springredis
3)配置spring的spring-redis.xml文件主要包含如下几点:
4)创建测试类TestRedisTemplate,此测试类共展示了RedisTemplate对redis的key、hash、List、set、sortset等数据类型的基本插入和查询操作。
5)测试结果展示
1)环境前期准备
已装好redis,参考之前的redis安装章节
2)创建基于maven的工程springredis
第一步:基于Maven创建工程springredis
第二步:配置工程依赖的jar包,在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>com.gongyunit</groupId> <artifactId>springredis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springredis</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.7.4.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
3)配置spring的spring-redis.xml文件主要包含如下几点:
配置spring跟redis的集成信息
配置redis的相关连接信息
配置spring提供的模板类RedisTemplate的bean
具体操作如下:
第一步:创建文件夹src/main/resources
第二步:在该文件夹下创建包:config
第三步: 编写文件spring-redis.xml
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org
/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
 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
 http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
 http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"
 default-autowire="byName" default-lazy-init="false">
 
 
 <!--读取properties配置文件,其它xml中可以用EL表达式直接获取key对应的value值-->
 <bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.
PropertyPlaceholderConfigurer">
 <property name="ignoreUnresolvablePlaceholders" value="true" />
 <property name="searchSystemEnvironment" value="true" />
 <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
 <property name="locations">
 <list>
 <value>classpath*:all.properties</value>
 </list>
 </property>
 <property name="fileEncoding" value="GBK" />
 <property name="order" value="2" />
 </bean>
 
 
 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
 <property name="maxTotal" value="${redis.maxTotal}"></property>
 <property name="maxIdle" value="${redis.maxIdle}"></property>
 <property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property>
 <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}"></property>
 <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"></property>
 <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"></property>
 </bean>
 
<!-- redis服务器中心 -->
 <bean id="jedisConnectionFactory" 
class="org.springframework.data.redis.
connection.jedis.JedisConnectionFactory"> 
 <property name="poolConfig" ref="poolConfig" /> 
 <property name="port" value="${redis.port.read}" /> 
 <property name="hostName" value="${redis.ip.read}" /> 
 <property name="password" value="${redis.pwd}" /> 
 <property name="timeout" value="${redis.timeout.read}"></property> 
 </bean> 
 
 <bean id="redisTemplate"
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.StringRedisSerializer" /> 
 </property> 
 <property name="hashKeySerializer"> 
 <bean class="org.springframework.data.redis.
serializer.StringRedisSerializer"/> 
 </property> 
 <property name="hashValueSerializer"> 
 <bean class="org.springframework.data.redis.
serializer.StringRedisSerializer" /> 
 </property>
 </bean>
</beans>4)创建测试类TestRedisTemplate,
此测试类共展示了RedisTemplate对redis的key、hash、List、set、sortset等数据类型的基本插入和查询操作。
第一步:创建包:com.gy.springredis.test
第二步:创建类:TestRedisTemplate类:
package com.gy.springredis.test;
 
import java.util.HashMap;
import java.util.Map;
 
import org.springframework.context.support.
ClassPathXmlApplicationContext;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
 
public class TestRedisTemplate {
 public static void main(String[] args) {
 ClassPathXmlApplicationContext appCtx =
new ClassPathXmlApplicationContext("config/spring-redis.xml");
 final RedisTemplate<String, Object> redisTemplate = appCtx.getBean("redisTemplate",RedisTemplate.class);
 
//添加一个 key
 ValueOperations<String, Object> value = redisTemplate.opsForValue();
 value.set("tkey", "hello key");
 //获取 这个 key 的值
 System.out .println(value.get("tkey"));
 
 
 //添加 一个 hash集合
 HashOperations<String, Object, Object> hash = redisTemplate.opsForHash();
 Map<String,Object> map = new HashMap<String,Object>();
 map.put("name", "thashmap");
 map.put("age", "99");
 hash.putAll("thashmap", map);
//获取 map
 System.out .println(hash.entries("thashmap"));
 
 
 //添加 一个 list 列表
 ListOperations<String, Object> list = redisTemplate.opsForList();
 list.rightPush("tlist", "list1");
 list.rightPush("tlist", "list2");
//输出 list
 System.out .println(list.range("tlist", 0, 1));
 
 
 //添加 一个 set 集合
 SetOperations<String, Object> set = redisTemplate.opsForSet();
 set.add("tset", "set1");
 set.add("tset", "set2");
 set.add("tset", "set3");
//输出 set 集合
 System.out .println(set.members("tset"));
 
 
//添加有序的 set 集合
 ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
 zset.add("tzset", "zset1", 0);
 zset.add("tzset", "zset2", 1);
 zset.add("tzset", "zset3", 2);
//输出有序 set 集合
 System.out .println(zset.rangeByScore("tzset", 0, 2));
 }
}5)测试结果展示
第一步:展示创建好的工程结构:

第二步:展示测试类的测试结果:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.hello key{age=99, name=thashmap}[list1, list2][set2, set3, set1][zset1, zset2, zset3]