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]