Spring-Data-Redis之实例Demo

来源:互联网 发布:全国冷藏车配货app软件 编辑:程序博客网 时间:2024/06/13 19:06

        了解完Spring Data Redis基本功能之后,根据快速开始的项目自己动手做了一个小Demo。使用的框架是Spring+Spring MVC+Mybatis;开发环境是Eclipse Kepler+JDK1.8+Maven3.2.3。


1、首先创建Maven工程


        在pom.xml文件中引入需要用到的jar包,这里是引入了所有的jar包,可根据自己的情况添加或删除jar包。

<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.tgb</groupId>  <artifactId>aop-redis-demo</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>    <properties>  <spring.version>4.3.8.RELEASE</spring.version>  <mybatis.version>3.2.8</mybatis.version><mybatis.spring.version>1.2.2</mybatis.spring.version><mysql.version>5.1.32</mysql.version><jackson.version>2.4.2</jackson.version><druid.version>1.0.9</druid.version>  </properties>    <dependencies>  <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.5</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>  <dependency><groupId>org.springframework</groupId><artifactId>spring-context</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-beans</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-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</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.data</groupId>        <artifactId>spring-data-commons</artifactId>        <version>1.12.4.RELEASE</version>    </dependency>    <dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-redis</artifactId>        <version>1.8.0.RELEASE</version>    </dependency><dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-keyvalue</artifactId>        <version>1.1.4.RELEASE</version>    </dependency>   <dependency>       <groupId>redis.clients</groupId>       <artifactId>jedis</artifactId>       <version>2.9.0</version>   </dependency> <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis.spring.version}</version></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency>  </dependencies></project>


2、逆向工程生成Mapper


        用逆向工程的方式,根据建好的数据库生成相应的Mapper。创建自己的数据库,建立相应的表。下面给出我建表的执行脚本:

DROP TABLE IF EXISTS `demo`;CREATE TABLE `demo` (  `name` char(50) DEFAULT NULL,  `id` char(50) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;


        逆向工程配置相应的数据库地址和信息,即可生成Mapper和POJO对象,将这些对象拷贝到自己的项目相应包下就可以了。


3、创建Spring配置文件


        在classpath下创建Spring配置文件applicationContext.xml,并在相应位置创建db.properties文件,配置数据库信息。

<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd        http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd        http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com"/>    <aop:aspectj-autoproxy proxy-target-class="true"/>    <context:property-placeholder location="classpath:properties/*.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="driverClassName" value="${jdbc.driver}" /><property name="maxActive" value="10" /><property name="minIdle" value="5" /></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /></bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.aop.redis.mapper" /></bean> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">              <property name="minIdle" value="${redis.minIdle}" />              <property name="maxIdle" value="${redis.maxIdle}" />                <property name="maxTotal" value="${redis.maxActive}" />                <property name="maxWaitMillis" value="${redis.maxWait}" />                <property name="testOnBorrow" value="${redis.testOnBorrow}" />            </bean> <bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">    <!--配置集群-->            <constructor-arg name="clusterConfig" ref="redisClusterConfig" />        </bean>      <!-- redis template definition -->  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">      <property name="connectionFactory" ref="jedisConnFactory" />    <property name="keySerializer">          <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />      </property>         <property name="valueSerializer">          <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />      </property>      <property name="hashKeySerializer">           <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>        </property>      <property name="hashValueSerializer">         <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>        </property>  </bean> <bean id="redisClusterConfig" class="org.springframework.data.redis.connection.RedisClusterConfiguration">              <property name="maxRedirects" value="3" />              <property name="clusterNodes">                  <set>             <bean class="org.springframework.data.redis.connection.RedisNode">                 <constructor-arg name="host" value="192.168.*.*"></constructor-arg>                  <constructor-arg name="port" value="6379"></constructor-arg>             </bean>                     <bean class="org.springframework.data.redis.connection.RedisNode">                         <constructor-arg name="host" value="192.168.*.*"></constructor-arg>                          <constructor-arg name="port" value="6380"></constructor-arg>                     </bean>                     <bean class="org.springframework.data.redis.connection.RedisNode">                         <constructor-arg name="host" value="192.168.*.*"></constructor-arg>                          <constructor-arg name="port" value="6381"></constructor-arg>                     </bean>                 </set>             </property>         </bean>  </beans>
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/aop-redis?characterEncoding=utf-8jdbc.username=rootjdbc.password=123456


4、编写Service代码

@Service@Transactionalpublic class RedisTemplateServiceImpl implements RedisTemplateService {@Autowiredprivate DemoMapper demoMapper;@Autowiredprivate RedisTemplate redisTemplate;public List<Demo> getByName(String name) {DemoExample example = new DemoExample();Criteria criteria = example.createCriteria();criteria.andNameEqualTo(name);return demoMapper.selectByExample(example);}public List<Demo> findAll() {DemoExample example = new DemoExample();List<Demo> demos = new ArrayList<Demo>();demos = demoMapper.selectByExample(example);// ListOperations<String, Object> list = redisTemplate.opsForList();// RedisSerializer<String> serializer =// redisTemplate.getStringSerializer();// serializer.serialize("allDemoList");// list.rightPush("allDemoList", demos);// redisTemplate.expire("allDemoList", 30, TimeUnit.SECONDS);BoundListOperations operations = redisTemplate        .boundListOps("allDemoList");operations.rightPush(demos);operations.expire(30, TimeUnit.SECONDS);return demos;}public Demo getById(String id) {DemoExample example = new DemoExample();Criteria criteria = example.createCriteria();criteria.andIdEqualTo(id);ValueOperations<String, Object> value = redisTemplate.opsForValue();value.set("demoId", id);return demoMapper.selectByExample(example).get(0);}}
从启动类启动后,调用该Service的方法,即可存储数据到Redis缓存中去。

  

        完整项目请点击链接下载:http://download.csdn.net/detail/u013038861/9850543。RedisTemplate具体的使用API下篇博客再介绍。

原创粉丝点击