Redis在SpringBoot中的常用操作,并内含RedisUtils工具类。

Redis介绍

在这里插入图片描述
Redis是一个开源的高性能的NOSQl数据库,其存储方式为Key-value的方式。
redis与其他key-value缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,从起点额时候可以再次加载进行使用。
  • Redis不仅仅支持简单的Key-value类型的数据,同时还提供list,set,zset,hash等数据结构存储。
  • Redis支持数据的备份,即master-slave模式的备份。

在SpringBoot工程中使用Redis

Spring boot对Jedis的支持,在1.x版本的时候,SpringBoot底层还是使用Jedis来连接Redis的,但是在2.x版本后,就换成了Lettuce。两者的区别如下:Jedis:采用的直连,多线程操作的话,是不安全的。使用Jedis Pool连接池!更像BIO模式(同步阻塞)!Lettuce:采用netty,实例可以在福哦个线程中进行共享,不存在线程不安全的情况!可以减少数线程数据,更像NIO模式(同步非阻塞)!

下面是在SpringBoot中使用Redis的步骤

1、引入依赖

<!--集成redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.1.7.RELEASE</version>
        </dependency>
        <!--序列化-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.54</version>
            <scope>compile</scope>
        </dependency>
        <!--lombok,自动生成set、get等方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>compile</scope>
        </dependency>

2、配置application.yaml配置文件

server:
  port: 8081
spring:
  redis:
    host: localhost
    port: 6379

3、测试

在Springboot中编写测试类来进行简单的测试。

package com.zhao.redistest;

import com.zhao.redistest.entity.User;
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.RedisTemplate;

@SpringBootTest
class RedisTestApplicationTests {
   
    @Autowired
    RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
   
        redisTemplate.opsForValue().set("zhao", "Hello Redis");
        String zhao = (String) redisTemplate.opsForValue().get("zhao");
        System.out.println(zhao);
    }
}

执行结果:

Hello Redis
在这里插入图片描述

RedisTemplate常用方法

// redisTemplate  #操作不同的数据类型,api和我们的指令是一样的 
// opsForValue  #操作字符串 类似String 
// opsForList  #操作List 类似List 
// opsForSet  #操作set
// opsForHash  #操作hash
// opsForZSet  #操作zset
// opsForGeo   #操作geo
// opsForHyperLogLog  #操作HyperLogLog
// 除了进本的操作,我们常用的方法都可以直接通过redisTemplate操作,比如事务,和基本的 CRUD 
// 获取redis的连接对象 
// RedisConnection connection = redisTemplate.getConnectionFactory().getConnection(); 
// connection.flushDb(); 
// connection.flushAll();

对象的存取测试

1、新建一个User类

package com.zhao.redistest.entity;

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


@Data
@AllArgsConstructor
@Builder
@NoArgsConstructor
public class User  {
   
    private String name;
    private String password;
    private Integer age;
}

解释:

@Data注解为LomBok注解用于生成get/set方法
@AllArgsConstructor用于生成有参构造
@NoArgsConstructor生成无参构造
@Builder注解可以在创建user对象时进行链式编程,创建对象。

编写测试代码:

package com.zhao.redistest;

import com.zhao.redistest.entity.User;
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.RedisTemplate;

@SpringBootTest
class RedisTestApplicationTests {
   
    @Autowired
    RedisTemplate redisTemplate;
    @Test
    void testObject() {
   
        User user = new User().builder()
                .age(12)
                .name("zhao")
                .password("123456")
                .build();

        redisTemplate.opsForValue().set("user",user);
        User user1 = (User) redisTemplate.opsForValue().get("user");
        System.out.println(user1);
    }
}

测试结果:
在这里插入图片描述
这里提示:序列化异常。报这个错误我们可以通过在创建实体类的时候实现Serializable接口避免。

package com.zhao.redistest.entity;

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

import java.io.Serializable;


@Data
@AllArgsConstructor
@Builder
@NoArgsConstructor
public class User implements Serializable {
   
    private String name;
    
  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gussu-毛虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值