欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java框架之SpringBoot整合Spring Data Redis 学习讲解,springbootredis

来源: javaer 分享于  点击 18807 次 点评:262

Java框架之SpringBoot整合Spring Data Redis 学习讲解,springbootredis


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的坐标

"https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

1.5.10.RELEASE

com.bjsxt

24-spring-boot-redis

0.0.1-SNAPSHOT

1.7

3.0.2.RELEASE

2.0.4

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-data-redis

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

/**

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

*

*

*/

@Configuration

publicclass RedisConfig {

/**

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

*

*/

@Bean

public JedisPoolConfig jedisPoolConfig(){

JedisPoolConfig config = new JedisPoolConfig();

//最大空闲数

config.setMaxIdle(10);

//最小空闲数

config.setMinIdle(5);

//最大链接数

config.setMaxTotal(20);

returnconfig;

}

/**

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

*/

@Bean

public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){

JedisConnectionFactory factory = new JedisConnectionFactory();

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

factory.setPoolConfig(config);

//配置链接Redis的信息

//主机地址

factory.setHostName("192.168.70.128");

//端口

factory.setPort(6379);

returnfactory;

}

/**

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

*/

@Bean

public RedisTemplate redisTemplate(JedisConnectionFactory factory){

RedisTemplate template = new RedisTemplate<>();

//关联

template.setConnectionFactory(factory);

//为key设置序列化器

template.setKeySerializer(new StringRedisSerializer());

//为value设置序列化器

template.setValueSerializer(new StringRedisSerializer());

returntemplate;

}

}

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

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

org.springframework.boot

spring-boot-starter-test

2.3.2 编写测试类

/**

* Spring Data Redis测试

*

*

*/

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes=App.class)

publicclass RedisTest {

@Autowired

private RedisTemplate redisTemplate;

/**

* 添加一个字符串

*/

@Test

publicvoid testSet(){

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

}

/**

* 获取一个字符串

*/

@Test

publicvoid testGet(){

String value = (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

publicclass RedisConfig {

/**

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

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

*/

@Bean

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

public JedisPoolConfig jedisPoolConfig(){

JedisPoolConfig config = new JedisPoolConfig();

/*//最大空闲数

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

public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){

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

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

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

JedisConnectionFactory factory = new JedisConnectionFactory();

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

factory.setPoolConfig(config);

//配置链接Redis的信息

//主机地址

/*factory.setHostName("192.168.70.128");

//端口

factory.setPort(6379);*/

returnfactory;

}

/**

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

*/

@Bean

public RedisTemplate redisTemplate(JedisConnectionFactory factory){

RedisTemplate template = new RedisTemplate<>();

//关联

template.setConnectionFactory(factory);

//为key设置序列化器

template.setKeySerializer(new StringRedisSerializer());

//为value设置序列化器

template.setValueSerializer(new StringRedisSerializer());

returntemplate;

}

}

4 Spring Data Redis操作实体对象

4.1.1 创建实体类

publicclass Users implements Serializable {

private Integer id;

private String name;

private Integer age;

public Integer getId() {

returnid;

}

publicvoid setId(Integer id) {

this.id = id;

}

public String getName() {

returnname;

}

publicvoid setName(String name) {

this.name = name;

}

public Integer getAge() {

returnage;

}

publicvoid setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

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

}

}

4.1.2测试代码

/**

* 添加Users对象

*/

@Test

publicvoid testSetUesrs(){

Users users = new Users();

users.setAge(20);

users.setName("张三丰");

users.setId(1);

//重新设置序列化器

this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());

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

}

/**

* 取Users对象

*/

@Test

publicvoid testGetUsers(){

//重新设置序列化器

this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());

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

System.out.println(users);

}

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

5.1测试代码

/**

* 基于JSON格式存Users对象

*/

@Test

publicvoid testSetUsersUseJSON(){

Users users = new Users();

users.setAge(20);

users.setName("李四丰");

users.setId(1);

this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));

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

}

/**

* 基于JSON格式取Users对象

*/

@Test

publicvoid testGetUseJSON(){

this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));

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

System.out.println(users);

}

相关栏目:

用户点评