原创:快速上手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
做产品的程序,才是好的程序员!