Skip to content

添加依赖

/pom.xml 文件中写入以下代码

xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

redis连接配置

/src/main/resources/application.yml 文件中写入以下代码

yml
spring:
  # Redis 配置
  redis:
    # Redis 服务器地址
    host: localhost
    # Redis 端口(默认6379)
    port: 6379
    # 密码(如果没设置密码,注释掉这行)
    password:
    # 数据库索引(默认0,Redis 有16个数据库,0-15)
    database: 0
    # 连接超时时间
    timeout: 10000ms
    # 连接池配置(推荐配置,避免频繁创建连接)
    lettuce:
      pool:
        # 最大活跃连接数
        max-active: 8
        # 最大空闲连接数
        max-idle: 8
        # 最小空闲连接数
        min-idle: 0
        # 最大等待时间(-1 表示无限制)
        max-wait: -1ms

Redis 配置类 RedisConfig.java

/src/main/java/com/example/xys1/config/RedisConfig.java 文件中写入以下代码

java
package com.example.xys1.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {
    /**
     * 自定义 RedisTemplate,使用 JSON 序列化
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        // 创建 RedisTemplate 对象
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        // 设置连接工厂
        redisTemplate.setConnectionFactory(connectionFactory);

        // 配置序列化器(解决乱码问题)
        // 1. 字符串序列化器(key 和 hash key 使用)
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // 2. JSON 序列化器(value 和 hash value 使用)
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();

        // 设置 key 的序列化方式
        redisTemplate.setKeySerializer(stringRedisSerializer);
        // 设置 hash key 的序列化方式
        redisTemplate.setHashKeySerializer(stringRedisSerializer);
        // 设置 value 的序列化方式
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        // 设置 hash value 的序列化方式
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);

        // 初始化 RedisTemplate
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

使用redis

/src/main/java/com/example/xys1/controller/XysController.java 文件中写入以下代码

java
package com.example.xys1.controller;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

// 标识为控制器,且所有方法返回值直接转为 JSON(无需视图解析)
@RestController
@RequestMapping("/xys")
public class XysController {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;


    @PostMapping("/test3")
    public Map<String, Object> test3() {
        redisTemplate.opsForValue().set("aaa", "i-am-aaa");
        Map<String, Object> result = new HashMap<>();
        result.put("name", "/xys/test3");
        return result;
    }

    @PostMapping("/test4")
    public Map<String, Object> test4() {
        Map<String, Object> result = new HashMap<>();
        result.put("name", "/xys/test4");
        result.put("aaa-value", redisTemplate.opsForValue().get("aaa"));
        return result;
    }
}