redis连接配置信息
spring.redis.host=124.221.76.124
不写默认wei6379,数据库为0
spring.redis.database=15
spring.redis.port=6379
首先创建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()存在第三个参数,就是过期时间,我们可以设置存储数据多久过期,所以如果此时你读取不到数据,那么可能就是数据过期了可以尝试重新存储或者设置一个较长的过期时间。
主要有以下几种注解:
首选我们要开启全局注解缓存,在启动类上加@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方法就是直接从缓存中取数据。