原創:快速上手Spring Boot整合Redis, crud 操作redis
阿新 • • 發佈:2020-08-02
本文寫作背景: 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