目录

一、Spring Boot 集成 Redis

1.1、添加 redis 依赖

1.2、配置 redis

二、 使用 Java 代码操控 Redis 

2.1、手动操作 redis

2.2、使用注解操作 redis 

2.2.1、存储缓存

2.2.2、读取缓存

2.2.3、更新缓存

2.3.4、删除缓存

一、Spring Boot 集成 Redis

1.1、添加 redis 依赖

或将以下配置添加到 pom.xml中:

org.springframework.boot

spring-boot-starter-data-redis

1.2、配置 redis

# 基础配置

spring.redis.database=0 # 0也是默认值,表示你要操控的 Redis 上的哪个数据库

spring.redis.port=6379 # 6379也是默认值,表示 Redis 端口

spring.redis.host= # 这里填写你的服务器地址

# 可省略

spring.redis.lettuce.pool.min-idle=5

spring.redis.lettuce.pool.max-idle=10

spring.redis.lettuce.pool.max-active=8

spring.redis.lettuce.pool.max-wait=1ms

spring.redis.lettuce.shutdown-timeout=100ms

二、 使用 Java 代码操控 Redis 

2.1、手动操作 redis

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;

@RestController

public class RedisController {

//引入 redis

@Autowired

private StringRedisTemplate stringRedisTemplate;

/**

* 存储

* @return

*/

@RequestMapping("/set")

public String setRedis() {

//存储 key-value 键值对: "username"-"jaychou"

stringRedisTemplate.opsForValue().set("username", "jaychou");

return "redis 存储成功!";

}

/**

* 读取

* @return

*/

@RequestMapping("/get")

public String getRedis() {

//通过 key 值读取 value

String result = stringRedisTemplate.opsForValue().get("username");

return result;

}

}

执行结果如下:

 

2.2、使用注解操作 redis 

使用注解操作 redis 总共需要两个步骤:

在启动类上添加全局注解缓存。使用 @Cacheable 、@CachePut、@CacheEvict 注解操作 Redis。

具体的如下:

首先,在 DemoApplication 类下加注释如下:

@SpringBootApplication

@EnableCaching //开启全局注解缓存

2.2.1、存储缓存

使用 @Cacheable 注解实现缓存的存储和读取,并搭配以下连个属性一起使用

value: 这个参数是必须要的,是存储缓存数据的包名。key: 可选。要使用SpEL表达式("#参数名"表示你要进行缓存的参数,对应方法的形参,"+"是参数之间的分割符),这就表明了你要缓存的数据的 key 值是什么(对应的 value 就是方法的返回值)。

例如我要存储用户名和用户 id 到缓存中

/**

* 存入或读取缓存

* @param id

* @param username

* @return

*/

@RequestMapping("/get")

@Cacheable(value = "spring.cache", key = "#id+#username")

public String get(String id, String username) {

//非空校验

if(!StringUtils.hasLength(id) || !StringUtils.hasLength(username)) {

return null;

}

System.out.println("执行了 get 方法");

return "id: " + id + ", username: " + username;

}

执行后可以观察到缓存已被存入:

2.2.2、读取缓存

实际上读取和存储缓存都是一样的代码,当第一次存储缓存后,再次调用此方法时,就不会调用此方法了,而是直接拿到缓存的数据填充到方法对应的参数中,接着直接执行 return 语句。

怎么证明上述过程呢?再执行一遍刚刚存储(读取)缓存的代码即可,因为刚刚我在代码中加上了打印代码,如果执行了方法,就会打印信息到控制台上,如果是直接从缓存中读取代码,就不会打印信息到控制台上。

2.2.3、更新缓存

使用注解 @CachePut 即可将当前方法的返回值通过对应的 key 更新到缓存中,类似于 java 中 HashMap 的 put 方法,如果当前不存在这个 key,则新增键值对,若存在,则更新对应的 value 值~

如下代码:

/**

* 更新缓存

* 将当前方法的返回值更新到缓存中

* @param id

* @param username

* @return

*/

@RequestMapping("/put")

@CachePut(value = "spring.cache", key = "#id+#username")

public String put(String id, String username) {

//非空校验

if(!StringUtils.hasLength(id) || !StringUtils.hasLength(username)) {

return null;

}

System.out.println("执行了 put 方法");

return "id: " + id + ", username: " + username;

}

2.3.4、删除缓存

使用 @CacheEvict 即可 根据 key 值删除缓存

如下代码:

/**

* 删除缓存

* @param id

* @param username

*/

@RequestMapping("/del")

@CacheEvict(value = "spring.cache", key = "#id+#username")

public void del(String id, String username) {

System.out.println("执行了删除缓存");

}

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。