文章目录
- Spring Boot 集成Redis
- 1.环境配置
- redis连接配置信息
- 不写默认wei6379,数据库为0
- 2.操作Redis
- 2.1 代码形式操作Redis
- 2.2 使用注解方式操作Redis
Spring Boot 集成Redis
1.环境配置
- 添加redis依赖
在老项目添加,可以在pom.xml文件直接添加,通过edit starters插件在plugins可以下载
搜索redis,选择第一个点击add如何点击ok,即可。如果创建新项目,可以直接在创建时搜索redis依赖添加
- 配置连接信息,host为连接的地址,port为端口号默认为6379,database选择的数据库不屑默认为0.
redis连接配置信息
spring.redis.host=124.221.76.124
不写默认wei6379,数据库为0
spring.redis.database=15
spring.redis.port=6379
2.操作Redis
2.1 代码形式操作Redis
首先创建RedisController类进行redis的写操作
package com.example.sp_redis.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @author zq
* @date 2023-07-26 13:15
*/
@RestController
public class RedisContoller {
//1.引入redis模板(redis本身)
@Resource
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("/set")
public String setRedis(){
stringRedisTemplate.opsForValue().set("username","zq");
return "redis写操作";
}
}
访问localhost:8080/set,打开我们的redis客户端,发现我们的数据库15成功写入username:zq
关于redis客户端,可以在官网下载。我们可以在自己的云服务器上下载redis,然后在redis.conf文件中注释掉bind 127.0.0.1并且将“protected-mode yes” 改为“protected-mode no”;具体操作可以查看我的关于Redis的安装与配置的博客。
关于Redis的安装与配置
接下来进行Redis的读操作:
@RequestMapping("/get")
public String getRedis(){
String res = stringRedisTemplate.opsForValue().get("username");
return res;
}
访问地址:
注意:在我们进行Redis写的操作时,set()存在第三个参数,就是过期时间,我们可以设置存储数据多久过期,所以如果此时你读取不到数据,那么可能就是数据过期了可以尝试重新存储或者设置一个较长的过期时间。
2.2 使用注解方式操作Redis
主要有以下几种注解:
- @Cacheable:查询/添加,判断redis是否有缓存,如果没有就将当前方法返回值存入redis中,如果存在就直接返回。
- @CachePut:修改,将方法返回值更新到redis缓存中。
- @CacheEvict:删除,将redis中对应的缓存删除。
首选我们要开启全局注解缓存,在启动类上加@EnableCaching
然后新建一个类进行注解式操作redis
查询或者添加的操作如下:
package com.example.sp_redis.controller;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RedisAnnotationController {
/**
* 存入或读取缓存
* @param name
* @param pnumber
* @return
*/
@RequestMapping("/ann-get")
// 注意多个参数时如何设置
@Cacheable(value = "spring.cache",key = "#name+#pnumber")
public String get(String name,String pnumber){
if (!StringUtils.hasLength(name)||!StringUtils.hasLength(pnumber)){
return null;
}
return "name=" +name+"|pnumber=" +pnumber;
}
}
实现结果如下,成功存入了数据;
进行删除操作:
@RequestMapping("/del")
@CacheEvict(value = "spring.cache", key = "#name+#pnumber")
public String del(String name,String pnumber){
return "delete success";
}
进行缓存的更新操作:
@CachePut(value = "spring.cache",key = "#name+'-'+#pnumber")
@RequestMapping("/put")
public String put(String name,String pnumber){
if (!StringUtils.hasLength(name)||!StringUtils.hasLength(pnumber)){
return null;
}
System.out.println("执行了put方法");
return "name=" +name+"->>"+"pnumber="+pnumber;
}
我们修改数据存储格式执行put方法之后,再次执行个体方法,可以发现缓存改变了
put方法结果
get方法结果:
注意:当我们多次执行get方法时,我们会发现控制台就输出了一次执行get方法,因为我们缓存中已经有了数据。之后的get方法就是直接从缓存中取数据。