0
点赞
收藏
分享

微信扫一扫

SpringBoot集成Redis入门

一、概述

redis是一种key-value形式的NoSQL内存数据库,它最大的特性就是将所有的数据都存储在内存中,所以读写速度快、性能好,它也支持将内存中的数据持久化到硬盘中,这样就不怕数据会丢失,兼顾性能和安全。

二、环境搭建

1.安装Redis-省略

2.核心命令和文件

redis-server:服务端程序

redis-cli:客户端程序

redis-benchmark:基准性能测试

redis.conf:redis配置文件

3.启动Redis

进入Redis安装目录,执行如下命令:

redis-server redis.windows.conf

或者直接点击redis-server.exe启动。

4.连接Redis

运行Redis目录下的redis-cli命令来连接Redis服务

SpringBoot集成Redis入门_redis

连接后使用ping命令测试联通性。PONG表示连接Redis成功。

再进行以下比较简单的key-value操作,参考命令如下:

SpringBoot集成Redis入门_spring_02

设置值和查询值都没有问题,说明连接和操作都正常了。

5.关闭Redis

在redis-cli窗口下使用shutdown命令关闭Redis。参考命令如下:

SpringBoot集成Redis入门_Redis_03

使用shutdown命令后,重新ping后,没有响应,Redis成功关闭。

三、SpringBoot集成Redis

1.添加依赖

 <!--fastjson-->
<dependency>
  <groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.83</version>
</dependency>
<!--redis-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--lombok-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

2.配置文件修改

在application.properties文件中添加Redis的相关配置,如果没有设置也可以使用Redis的默认配置

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.database=0

3.使用的模板

自动配置类中注册了两个默认的Redis模板:RedisTemplate和StringRedisTemplate,这两个模板都可以直接注入使用。

StringRedisTemplate继承自RedisTemplate,只能处理<String,String>的泛型数据,而RedisTemplate可以处理<Object,Object>所有泛型数据。

StringRedisTemplate默认使用StringRedisSerializer序列化器,RedisTemplate默认使用JDK自带的序列化器。

模板有很多通用的操作接口,用于对特定的数据类型或某些键进行操作,常用的接口如下表所示:

接口

描述

GeoOperations

地理空间操作

HashOperations

散列类型操作

ListOperations

列表操作

SetOperations

集合操作

ValueOperations

字符串操作

ZSetOperations

有序集合操作

HyperLogLogOperations

HyperLogLog类型操作

4.测试

a.测试字符串

示例代码如下:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;

@SpringBootTest
class MySpringBootApplicationTests {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 设置值
     */
    @Test
    void set() {
        stringRedisTemplate.opsForValue().set("name","lisi");
    }

    /**
     * 取值
     */
    @Test
    void get(){
        String name = stringRedisTemplate.opsForValue().get("name");
        // 输出 lisi
        System.out.println(name);
    }

}

我们在执行set单元测试后,我们通过redis-cli查看数据。

SpringBoot集成Redis入门_Redis_04

我们看到已经获取到了设置的redis数据。

Redis也可以保存List对象数据,这在一些页面的数据列表访问的时候用得到,可以把数据列表做为缓存存下来,设置定时过期的时间,存在缓存就使用缓存的数据,如果没有缓存数据才访问数据库,这样可以大大提升系统运行的效率。

b.测试List对象

示例代码如下:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author qx
 * @date 2023/06/18
 * @desc 实体
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {

    private Long id;

    private String name;

    private Integer age;

}

import com.alibaba.fastjson.JSON;
import com.example.myspringboot.bean.Student;
import lombok.RequiredArgsConstructor;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author qx
 * @date 2023/06/18
 * @desc
 */
@RequiredArgsConstructor
@RestController
public class RedisController {
    private final StringRedisTemplate stringRedisTemplate;

    /**
     * 设置redis数据
     *
     * @param name key值
     */
    @GetMapping("/redis/set")
    public String set(@RequestParam("name") String name) {
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        Student student1 = new Student(1L, "aa", 28);
        Student student2 = new Student(2L, "bb", 26);
        List<Student> studentList = new ArrayList<>();
        studentList.add(student1);
        studentList.add(student2);
        // 使用FastJson把列表数据转成Json字符串存储
        String jsonString = JSON.toJSONString(studentList);
        valueOperations.set(name, jsonString);
        return "保存成功";
    }

    /**
     * 获取Redis数据
     *
     * @param name key值
     */
    @GetMapping("/redis/get")
    public List<Student> get(@RequestParam("name") String name) {
        ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        String json = valueOperations.get(name);
        return JSON.parseArray(json, Student.class);
    }

}

测试如下:

SpringBoot集成Redis入门_spring_05

SpringBoot集成Redis入门_redis_06

成功把我们的列表数据保存到了Redis,也通过方法获取到了Redis数据。

举报

相关推荐

0 条评论