spring 封装了 RedisTemplate 对象来进行对redis的各种操作,它支持所有的 redis 原生的 api,使用起来非常方便,接下来利用SpringBoot整合下Redis,利用RedisTemplate做简单的数据存储,及设置过期时间操作,本实例Github地址09-redis,废话不多说,开整:
<?xml version="1.0" encoding="UTF-8"?>
<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.perfree</groupId>
<artifactId>redis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>redis</name>
<description>SpringBoot-Redis</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- SpringBoot整合Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
关键依赖:
<!-- SpringBoot整合Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
关于redis的配置
## Redis 配置
## Redis数据库索引(默认为0)
spring.redis.database=0
## Redis服务器地址
spring.redis.host=127.0.0.1
## Redis服务器连接端口
spring.redis.port=6379
## Redis服务器连接密码(默认为空)
spring.redis.password=
## 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=10
## 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=
## 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
## 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
## 连接超时时间(毫秒)
spring.redis.timeout=3000ms
只做简单的示范,所以直接在Controller进行存储redis的操作了
package com.perfree.redis.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.TimeUnit;
/**
*User Controller
*/
@RestController
public class UserController {
@Autowired
private RedisTemplate redisTemplate;
//key-val形式将名字放入redis
@RequestMapping("/setName")
public String setName(){
redisTemplate.opsForValue().set(2,"张三");
return "success";
}
//key-val形式根据key获取名字
@RequestMapping("/getName")
public String getUserNameById(){
String name = (String) redisTemplate.opsForValue().get(2);
return name;
}
//存入redis并设置过期时间
@RequestMapping("/setNameAndOutTime")
public String setNameAndOutTime(){
redisTemplate.opsForValue().set(3,"王二",20, TimeUnit.SECONDS);
return "success";
}
//取出存入的设置过期时间的name,20秒之内可以,20秒之后为null
@RequestMapping("/getNameAndOutTime")
public String getNameAndOutTime(){
String name = (String) redisTemplate.opsForValue().get(3);
return name;
}
}
这里只利用RedisTemplate做了两个简单的操作,其他可以参照官方api
首先我们先访问第一个url,向redis中存入name,但不设置过期时间:
ok,成功了,接下来我们访问第二个url,取出我们存入的name:
ok,拿到了,接下来我们访问第三个url,在存入name的同时设置过期时间:
ok,成功,接下来我们访问最后一个url,取出我们存入的设置了过期时间的name(20秒之内结果):
没问题,接下来耐心等待20秒~
......
......
......
20秒过后,过期,取出为null。简单的整合reids就算完成了~