原创:快速上手Spring Boot整合Redis, crud 操作redis

本文写作背景: jwt操作,要把生成token存入redis.因redis数据大都存在内存中。加之redis数据是可以设置缓存,即添加每条数据可以设置有效时间。一旦过了有效时间,网页请求到服务器。携带token发现redis中,没有携带的数据。这样就会服务器端代码,可以返回跳转到登陆页面。当然,因读取写入的速度是非常快的, 所以经常被用来做数据, 页面等的缓存。

1:安装数据库 

2:启动数据库

3:spring boot 中配置

4:案例代码书写

 

1:安装数据库 

  下载地址:https://github.com/tporadowski/redis/releases

 a)下载安装包

  

 

 

 

b)配置环境变量

  安装目录结构:

 

2:启动数据库
   redis数据启动=服务端启动+客户端启动
  1)服务启端启动命令

     cmd-->输入命名:redis-server
  

 

   2)客户端连接数据成功,添加数据,查询数据
    客户端连接新建窗口时,不要要关闭服务器连接窗口

    使用如下命令确保安装成功,并添加数据

 

3:spring boot 中配置

  a)pom.xml 添加依赖

  <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <!-- data-redis 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.3.2.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <!--  apache下可以建立公共资源池,即对象池,把对象缓存下次直接取之用多,提高效率     -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

 

   b)配置appilcation.yml    

    #设置redis数据库连接信息
  redis:
    database: 0  #redis数据库在内存中,用0即可
    host: localhost
    port: 6379

 

  

4:案例代码书写

a)实体类一定要添加序列化

package com.ibaiqi.gov.springbootshiro.entity;

import java.io.Serializable;
import java.util.Date;

/**
 * 为学习redis 而创建实体类, 一定要实现接口持久化接口
 */
public class Student implements Serializable {
    private Integer id;
    private String username;
    private Integer score;
    private Date birthday;

    public Student() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getScore() {
        return score;
    }

    public void setScore(Integer score) {
        this.score = score;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }


    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", score=" + score +
                ", birthday=" + birthday +
                '}';
    }
}

 

b)控制器书写

package com.ibaiqi.gov.springbootshiro.controller;

import com.ibaiqi.gov.springbootshiro.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

/**
 * student控制器,为学习redis准备
 */
@RestController
public class StudentController {
    @Autowired
    RedisTemplate redisTemplate;
    /**
     * 1:添加或修改  redis
     * 把学生对象存到redis里.重新添加会修改原来数据,所以可理解添加和修改是同一个方法
     */
    @PostMapping("/student")
    public void set(@RequestBody Student student){
        System.out.println("准备向redis数据库存储信息");
        //可以在此处打断点,看前端传递过来的值.
        redisTemplate.opsForValue().set("student",student);
    }

    /**
     * 2:查询 redis中数据  如:http://localhost:8083/student/student
     * 因原来存储为student,所以路径上值加上 student/student
     * @param key
     * @return
     */
    @GetMapping("/student/{key}")
    public Student get(@PathVariable("key") String key){
        Student student = (Student) redisTemplate.opsForValue().get(key);
        return  student;
    }

    @DeleteMapping("/student/{key}")
    public boolean del(@PathVariable("key") String key){
        redisTemplate.delete(key);
        return redisTemplate.hasKey(key); //判断是否有key,返回boolean 类型。删除成功返回false
    }
}

3)通过 post选择不同请求方式,确保成功



再次感谢:本文参者楠哥B站视频 : https://www.bilibili.com/video/BV18E411e7WJ?p=1

 

posted @ 2020-08-02 08:39  码哥之旅  阅读(407)  评论(0编辑  收藏  举报