1. 程式人生 > 實用技巧 >原創:快速上手Spring Boot整合Redis, crud 操作redis

原創:快速上手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