NoSQL学习:Redis与Spring集成:RedisTemplate
1、Redis与Spring集成简介
通过此文,可以掌握如下功能点:1)spring和redis集成后,配置文件如何配置2)学会spring提供的直接操作redis的模板类RedisTemplate的常用操作,此模板类可以代替原来redis的自带的jedis的相关操作。RedisTemplate封装了很多redis的基本操作,使用起来更方便。2、Redis与Spring集成的编码核心步骤
1)环境前期准备
2)创建基于maven的工程springredis
3)配置spring的spring-redis.xml文件主要包含如下几点:
- 配置spring跟redis的集成信息
- 配置redis的相关连接信息
- 配置spring提供的模板类RedisTemplate的bean
4)创建测试类TestRedisTemplate,此测试类共展示了RedisTemplate对redis的key、hash、List、set、sortset等数据类型的基本插入和查询操作。
5)测试结果展示
3、Redis与Spring集成的具体编码
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]相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04