Java框架_SpringBoot整合Spring Data Redis

  • Redis版本:3.0.0
  • 运行环境:Linux

1 安装Redis

1.1安装gcc

Yum installgcc-c++

1.2 解压redis.3.0.0.tar.gz压缩包

tar -zxvfredis-3.0.0.tar.gz

1.3 进入解压后的目录进行编译

cd redis-3.0.0

make

1.4 将Redis安装到指定目录

makePREFIX=/usr/local/redis install

1.5 启动Redis

./redis-server

2 Spring Boot整合Spring Data Redis

Spring Data Redis是属于Spring Data下的一个模块。作用就是简化对于redis的操做

2.1 修改pom文件添加Spring Data Redis的坐标

<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>

 <parent>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-parent</artifactId>

   <version>1.5.10.RELEASE</version>

 </parent>

 <groupId>com.bjsxt</groupId>

 <artifactId>24-spring-boot-redis</artifactId>

 <version>0.0.1-SNAPSHOT</version>

 

 <properties>

 <java.version>1.7</java.version>

 <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>

 <thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>

 </properties>

 

 <dependencies>

   <!-- springBoot的启动器 -->

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-web</artifactId>

   </dependency>

   <!-- thymeleaf的启动器 -->

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-thymeleaf</artifactId>

   </dependency>

   

   <!-- Spring Data Redis的启动器 -->

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-data-redis</artifactId>

   </dependency>

 </dependencies>

</project>


2.2  编写Spring DataRedis的配置类(重点)

/**

 *完成对Redis的整合的一些配置

 *

 *

 */

@Configuration

publicclassRedisConfig {

 

   /**

     * 1.创建JedisPoolConfig对象。在该对象中完成一些链接池配置

     *

     */

   @Bean

   publicJedisPoolConfig jedisPoolConfig(){

        JedisPoolConfigconfig=newJedisPoolConfig();

       //最大空闲数

       config.setMaxIdle(10);

       //最小空闲数

       config.setMinIdle(5);

       //最大链接数

       config.setMaxTotal(20);

       

       returnconfig;

    }

   

   /**

     * 2.创建JedisConnectionFactory:配置redis链接信息

     */

   @Bean

   publicJedisConnectionFactory jedisConnectionFactory(JedisPoolConfigconfig){

        JedisConnectionFactoryfactory=newJedisConnectionFactory();

       //关联链接池的配置对象

       factory.setPoolConfig(config);

       //配置链接Redis的信息

       //主机地址

       factory.setHostName("192.168.70.128");

       //端口

       factory.setPort(6379);

       

       returnfactory;

    }

   

   /**

     * 3.创建RedisTemplate:用于执行Redis操作的方法

     */

   @Bean

   publicRedisTemplate<String,Object> redisTemplate(JedisConnectionFactoryfactory){

        RedisTemplate<String, Object>template=newRedisTemplate<>();

       //关联

       template.setConnectionFactory(factory);

       

       //为key设置序列化器

       template.setKeySerializer(newStringRedisSerializer());

       //为value设置序列化器

       template.setValueSerializer(newStringRedisSerializer());

       

       returntemplate;

    }

}

 

2.3     编写测试代码,测试整合环境

2.3.1        修改pom文件添加测试启动器坐标

 <!-- Test的启动器 -->

   <dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-test</artifactId>

   </dependency>

2.3.2  编写测试类

/**

 * Spring Data Redis测试

 *

 *

 */

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes=App.class)

publicclassRedisTest {

 

   @Autowired

   privateRedisTemplate<String, Object>redisTemplate;

   

   /**

     *添加一个字符串

     */

   @Test

   publicvoidtestSet(){

       this.redisTemplate.opsForValue().set("key","北京尚学堂");

    }

   

   /**

     *获取一个字符串

     */

   @Test

   publicvoidtestGet(){

        Stringvalue= (String)this.redisTemplate.opsForValue().get("key");

        System.out.println(value);

    }

}


3   提取redis的配置信息

3.1 在src/main/resource/目录下新建一个配置文件:application.properties

spring.redis.pool.max-idle=10

spring.redis.pool.min-idle=5

spring.redis.pool.max-total=20

 

spring.redis.hostName=192.168.70.128

spring.redis.port=6379


3.2     修改配置类

/**

 *完成对Redis的整合的一些配置

 *

 *

 */

@Configuration

publicclassRedisConfig {

 

   /**

     * 1.创建JedisPoolConfig对象。在该对象中完成一些链接池配置

     *@ConfigurationProperties:会将前缀相同的内容创建一个实体。

     */

   @Bean

   @ConfigurationProperties(prefix="spring.redis.pool")

   publicJedisPoolConfig jedisPoolConfig(){

        JedisPoolConfigconfig=newJedisPoolConfig();

       /*//最大空闲数

        config.setMaxIdle(10);

        //最小空闲数

        config.setMinIdle(5);

        //最大链接数

        config.setMaxTotal(20);*/

        System.out.println("默认值:"+config.getMaxIdle());

        System.out.println("默认值:"+config.getMinIdle());

        System.out.println("默认值:"+config.getMaxTotal());

       returnconfig;

    }

   

   /**

     * 2.创建JedisConnectionFactory:配置redis链接信息

     */

   @Bean

   @ConfigurationProperties(prefix="spring.redis")

   publicJedisConnectionFactory jedisConnectionFactory(JedisPoolConfigconfig){

        System.out.println("配置完毕:"+config.getMaxIdle());

        System.out.println("配置完毕:"+config.getMinIdle());

        System.out.println("配置完毕:"+config.getMaxTotal());

       

        JedisConnectionFactoryfactory=newJedisConnectionFactory();

       //关联链接池的配置对象

       factory.setPoolConfig(config);

       //配置链接Redis的信息

       //主机地址

       /*factory.setHostName("192.168.70.128");

        //端口

        factory.setPort(6379);*/

       returnfactory;

    }

   

   /**

     * 3.创建RedisTemplate:用于执行Redis操作的方法

     */

   @Bean

   publicRedisTemplate<String,Object> redisTemplate(JedisConnectionFactoryfactory){

        RedisTemplate<String, Object>template=newRedisTemplate<>();

       //关联

       template.setConnectionFactory(factory);

       

       //为key设置序列化器

       template.setKeySerializer(newStringRedisSerializer());

       //为value设置序列化器

       template.setValueSerializer(newStringRedisSerializer());

       

       returntemplate;

    }

}

 


4  Spring Data Redis操作实体对象

4.1.1 创建实体类

publicclassUsersimplementsSerializable {

   

   privateIntegerid;

   privateStringname;

   privateIntegerage;

   publicInteger getId() {

       returnid;

    }

   publicvoidsetId(Integerid) {

       this.id=id;

    }

   publicString getName() {

       returnname;

    }

   publicvoidsetName(Stringname) {

       this.name=name;

    }

   publicInteger getAge() {

       returnage;

    }

   publicvoidsetAge(Integerage) {

       this.age=age;

    }

   @Override

   publicString toString() {

       return"Users [id="+id+", name="+name+", age="+age+"]";

    }

   

}

 


4.1.2        测试代码

/**

     *添加Users对象

     */

   @Test

   publicvoidtestSetUesrs(){

        Usersusers=newUsers();

       users.setAge(20);

       users.setName("张三丰");

       users.setId(1);

       //重新设置序列化器

       this.redisTemplate.setValueSerializer(newJdkSerializationRedisSerializer());

       this.redisTemplate.opsForValue().set("users",users);

    }

   

   /**

     *取Users对象

     */

   @Test

   publicvoidtestGetUsers(){

       //重新设置序列化器

       this.redisTemplate.setValueSerializer(newJdkSerializationRedisSerializer());

        Usersusers= (Users)this.redisTemplate.opsForValue().get("users");

        System.out.println(users);

    }


5  Spring Data Redis以JSON格式存储实体对象

5.1     测试代码

/**

     *基于JSON格式存Users对象

     */

   @Test

   publicvoidtestSetUsersUseJSON(){

        Usersusers=newUsers();

       users.setAge(20);

       users.setName("李四丰");

       users.setId(1);

       this.redisTemplate.setValueSerializer(newJackson2JsonRedisSerializer<>(Users.class));

       this.redisTemplate.opsForValue().set("users_json",users);

    }

   

   /**

     *基于JSON格式取Users对象

     */

   @Test

   publicvoidtestGetUseJSON(){

       this.redisTemplate.setValueSerializer(newJackson2JsonRedisSerializer<>(Users.class));

        Usersusers= (Users)this.redisTemplate.opsForValue().get("users_json");

        System.out.println(users);

    }


版权声明:本文为lxp18850413505原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。