Spring Boot 整合Redis操作缓存模块

一、前言

  • 实验目的

安装 Redis之后,使用 Spring Boot 整合 Redis 以及如何操作 Redis。

 

二、Redis 安装和启动

  • 安装

不论是在window还是Linux,安装都很方便。我的是安装在win10本地上:

Spring Boot 整合Redis操作缓存模块_第1张图片

  •  修改密码

Spring Boot 整合Redis操作缓存模块_第2张图片

三、Spring Boot 整合 Redis

  • 新增 redis 连接依赖

在 pom.xml 文件中新增如下内容:

        
            org.springframework.boot
            spring-boot-starter-data-redis
        
  • 修改配置文件

在 application.properties 中新增如下配置:

# redis config

#redis机器ip
spring.redis.host=127.0.0.1
#redis端口
spring.redis.port=6379
#redis密码
spring.redis.password=2345678
#目标数据库序号
spring.redis.database=1
#redis超时时间(毫秒),如果不设置,取默认值2000
spring.redis.timeout=10000ms
#连接池的最大数据库连接数。
spring.redis.jedis.pool.max-active=300
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
spring.redis.jedis.pool.max-wait=1000ms


server.port=7878
  • 操作对象:增删查用户

新建User.java:

package com.springboot.redis;

public class User {

    private Integer id;
    private String name;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

新建 RedisController.java:

package com.springboot.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.springboot.redis.User;

@RestController
public class RedisController {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    private RedisTemplate redisTemplate;

    @GetMapping("/addStringToRedis")
    @ResponseBody
    public Boolean addStringToRedis(String key, String value) {
        stringRedisTemplate.opsForValue().set(key, value);
        return true;
    }

    @GetMapping("/getStringFromRedis")
    @ResponseBody
    public String getStringFromRedis(String key) {
        return stringRedisTemplate.opsForValue().get(key);
    }

    @GetMapping("/addUserToRedis")
    @ResponseBody
    public Boolean addUserToRedis(String name, String password) {
        User user = new User();
        user.setName(name);
        user.setPassword(password);
        redisTemplate.opsForValue().set(name, user);
        return true;
    }

    @GetMapping("/getUserFromRedis")
    @ResponseBody
    public User getUserFromRedis(String name) {
        return (User) redisTemplate.opsForValue().get(name);
    }

    @GetMapping("/deleteUserFromRedis")
    @ResponseBody
    public Boolean deleteUserFromRedis(String name) {
        return redisTemplate.delete(name);
    }
}

新增 Redis 配置类:

package com.springboot.redis;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @author 13
 * RedisConfiguration
 */
@Configuration
@EnableCaching
public class RedisConfiguration extends CachingConfigurerSupport {
    /**
     * 添加到 IOC 容器中
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);

        //使用StringRedisSerializer来序列化和反序列化redis的key值
        RedisSerializer redisSerializer = new StringRedisSerializer();
        //key
        redisTemplate.setKeySerializer(redisSerializer);
        redisTemplate.setHashKeySerializer(redisSerializer);
        //value
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

测试:

  • 增加用户:http://localhost:7878/addUserToRedis?name=shiyanlou&password=123456

Spring Boot 整合Redis操作缓存模块_第3张图片

  • 查询用户:http://localhost:7878/getUserFromRedis?name=shiyanlou

Spring Boot 整合Redis操作缓存模块_第4张图片

  • 删除用户:http://localhost:7878/deleteUserFromRedis?name=shiyanlou

Spring Boot 整合Redis操作缓存模块_第5张图片

 

你可能感兴趣的:(Redis,Java,Spring,Boot)