快速入门 - Spring Boot 集成 Redis 配置及使用

目录

一、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 依赖

快速入门 - Spring Boot 集成 Redis 配置及使用_第1张图片

或将以下配置添加到 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;
    }

}

执行结果如下:

 快速入门 - Spring Boot 集成 Redis 配置及使用_第2张图片

2.2、使用注解操作 redis 

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

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

具体的如下:

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

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

2.2.1、存储缓存

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

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

例如我要存储用户名和用户 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;
    }

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

快速入门 - Spring Boot 集成 Redis 配置及使用_第3张图片

 

2.2.2、读取缓存

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

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

2.2.3、更新缓存

使用注解 @CachePut 即可将当前方法的返回值更新到缓存中

如下代码:

    /**
     * 更新缓存
     * 将当前方法的返回值更新到缓存中
     * @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 即可删除缓存

如下代码:

    /**
     * 删除缓存
     * @param id
     * @param username
     */
    @RequestMapping("/del")
    @CacheEvict(value = "spring.cache", key = "#id+#username")
    public void del(String id, String username) {
        System.out.println("执行了删除缓存");
    }

快速入门 - Spring Boot 集成 Redis 配置及使用_第4张图片

 

你可能感兴趣的:(Redis,redis,spring,boot,java)