Perfree

Perfree

未设置

未设置

54 文章数
72 评论数

SpringBoot-整合Redis

perfree
2019-01-07 / 0 评论 / 2407 阅读 / 0 点赞

spring 封装了 RedisTemplate 对象来进行对redis的各种操作,它支持所有的 redis 原生的 api,使用起来非常方便,接下来利用SpringBoot整合下Redis,利用RedisTemplate做简单的数据存储,及设置过期时间操作,本实例Github地址09-redis,废话不多说,开整:

pom文件

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

application.properties配置文件

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

只做简单的示范,所以直接在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就算完成了~

上一篇 下一篇
评论
来首音乐
最新回复
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月