【Java】SpringBoot快速整合Redis

这篇具有很好参考价值的文章主要介绍了【Java】SpringBoot快速整合Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是Redis?

        文末有源码gitee地址

        【面试】浅学Redis_redis 广播-CSDN博客

        Redis是一种高性能开源的基于内存的,采用键值对存储的非关系型数据库,它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis的特点之一是数据存储在内存中,因此读写速度非常快。

以下是Redis的一些主要特点和作用:

  1. 高性能: Redis的数据存储在内存中,读写速度非常快,这使得它成为处理大量请求的理想选择。

  2. 数据结构丰富: Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。这使得它可以应用于各种不同的场景,如缓存、消息队列、计数器等。

  3. 持久化: Redis可以通过将数据写入磁盘来实现持久化,以防止数据丢失。它支持两种持久化方式:RDB(快照)和AOF(日志文件)。

  4. 分布式: Redis支持分布式架构,可以将数据分布在多个节点上,提高系统的扩展性和容错性。

  5. 缓存: 作为缓存系统,Redis可以用于存储频繁访问的数据,以减轻数据库负载,提高访问速度。

  6. 消息队列: Redis的发布/订阅机制可以用作简单的消息队列,用于解耦系统的各个组件。

  7. 计数器: Redis的原子操作和高速性使其成为实现计数器功能的理想选择,例如网站的访问计数器。

  8. 事务支持: Redis支持事务,可以将多个命令包装在一个事务中,保证这些命令要么全部执行成功,要么全部失败。

Redis的5种数据存储结构和使用场景

存储结构包含:String字符串,List列表,Set集合,ZSet有序集合,Hash哈希

    String(字符串):
        适用场景:存储简单的键值对数据,如配置信息、计数器等。
        示例应用:缓存系统配置、用户token、简单计数器。

    Hash(哈希表):
        适用场景:存储对象的多个字段,方便获取和更新特定字段。
        示例应用:用户信息存储、对象属性存储。

    List(列表):
        适用场景:存储有序的元素列表,支持在两端进行元素的插入和删除。
        示例应用:消息队列、任务队列、实时消息推送。

    Set(集合):
        适用场景:存储不重复的元素集合,支持集合运算(交集、并集、差集)。
        示例应用:用户标签、共同关注的好友、无序集合数据。

    ZSet(有序集合):
        适用场景:类似Set,但每个元素都关联一个分数,用于支持元素的有序排列。
        示例应用:排行榜、按权重排序的任务队列。

如何使用呢?

String(字符串):

// 存储String类型数据
redisTemplate.opsForValue().set("greeting", "Hello, Redis!");

// 读取String类型数据
String value = (String) redisTemplate.opsForValue().get("greeting");

System.out.println(value);  // 输出: Hello, Redis!

Hash(哈希表):

// 存储Hash类型数据
redisTemplate.opsForHash().put("userDetails", "userId", "123");
redisTemplate.opsForHash().put("userDetails", "userName", "John Doe");

// 读取Hash类型数据
String userId = (String) redisTemplate.opsForHash().get("userDetails", "userId");
String userName = (String) redisTemplate.opsForHash().get("userDetails", "userName");

System.out.println(userId);  // 输出: 123
System.out.println(userName);  // 输出: John Doe

List(列表):

// 存储List类型数据
redisTemplate.opsForList().rightPushAll("tasks", "task1", "task2");

// 读取List类型数据
List<String> tasks = redisTemplate.opsForList().range("tasks", 0, -1);

System.out.println(tasks);  // 输出: [task1, task2]

Set(集合):

// 存储Set类型数据
redisTemplate.opsForSet().add("uniqueUsers", "user1", "user2", "user3");

// 读取Set类型数据
Set<String> uniqueUsers = redisTemplate.opsForSet().members("uniqueUsers");

System.out.println(uniqueUsers);  // 输出: [user1, user2, user3]

ZSet(有序集合):

// 存储ZSet类型数据
redisTemplate.opsForZSet().add("topScores", "player1", 100.0);
redisTemplate.opsForZSet().add("topScores", "player2", 150.0);

// 读取ZSet类型数据(按分数从小到大排序)
Set<ZSetOperations.TypedTuple<Object>> topScores = redisTemplate.opsForZSet().rangeWithScores("topScores", 0, -1);

for (ZSetOperations.TypedTuple<Object> tuple : topScores) {
    System.out.println(tuple.getValue() + " - " + tuple.getScore());
}
// 输出:
// player1 - 100.0
// player2 - 150.0

SpringBoot整合ElasticSearch的步骤:

1.代码层级结构

【Java】SpringBoot快速整合Redis,Java,java,spring boot,redis

1. 添加依赖

在pom.xml中添加redis的依赖:

        <!--Redis的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
2. 配置redis连接信息

在application.properties或(application.yml)中配置redis连接信息,如下:

spring:
  data:
    redis:
      port: 6379
      username:
      password:
      host: 127.0.0.1
3.在业务层进行注入RedisTemplate
package com.example.springbootredis.service.impl;

import com.example.springbootredis.domain.Courses;
import com.example.springbootredis.mapper.CoursesMapper;
import com.example.springbootredis.service.CoursesService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

@Service
@Slf4j
public class CoursesServiceImpl implements CoursesService {


    @Autowired
    private RedisTemplate redisTemplate;


    @Autowired
    private CoursesMapper coursesMapper;

    @Override
    public List<Courses> findAll() throws JsonProcessingException {
        // 从Redis缓存中进行获取
        String cachedSalaries = (String) redisTemplate.opsForValue().get("Salaries");
        if (cachedSalaries != null) {
            // 如果有直接进行返回
            log.info("从缓存中获取");
            return Arrays.asList(new ObjectMapper().readValue(cachedSalaries, Courses[].class));
        }

        // 如果redis缓存中没有,从数据库中进行查询,然后同步到缓存中
        List<Courses> courses = coursesMapper.findAll();
        if (!courses.isEmpty()) {
            // 同步到Redis缓存当中
            log.info("从数据库中获取,并同步到缓存当中");
            redisTemplate.opsForValue().set("Salaries", new ObjectMapper().writeValueAsString(courses));
            return courses;
        }

        return null;
    }

}

上述只给出了Redis相关部分的代码,如果想进行测试,直接拉去gitee代码,然后在数据库中执行courses对应的sql,还有修改数据库用户名和密码即可测试。

【Java】SpringBoot快速整合Redis,Java,java,spring boot,redis

测试结果:

【Java】SpringBoot快速整合Redis,Java,java,spring boot,redis

 测试从数据查询和从redis缓存中查询的效率差别。

【Java】SpringBoot快速整合Redis,Java,java,spring boot,redis

gitee下载地址:https://gitee.com/sophisticatedxin/springboot-redis.git文章来源地址https://www.toymoban.com/news/detail-804992.html

到了这里,关于【Java】SpringBoot快速整合Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot 整合Redis实现消息队列

      本篇文章主要来讲Spring Boot 整合Redis实现消息队列,实现redis用作消息队列有多种方式,比如: 基于 List 的 rpush+lpop 或 lpush+rpop 基于 List 的 rpush+blpop 或 lpush+brpop (阻塞式获取消息) 基于 Sorted Set 的优先级队列 Redis Stream (Redis5.0版本开始) Pub/Sub 机制   不过这里讲的是

    2024年02月13日
    浏览(48)
  • 【Redis】Spring/SpringBoot 操作 Redis Java客户端

    1.Jedis 2.Lettuce(主流) -Spring Data Redis 1.添加Redis 驱动依赖 2.设置Redis 连接信息 3.根据Redis API 操作Redis

    2024年02月13日
    浏览(52)
  • Spring Boot整合Redis实现订单超时处理

    🎉欢迎来到架构设计专栏~Spring Boot整合Redis实现订单超时处理 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果文

    2024年02月03日
    浏览(46)
  • Spring Boot整合Redis的高效数据缓存实践

    引言 在现代Web应用开发中,数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案,被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis,通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合redis,需要先安装redis Redis 

    2024年01月22日
    浏览(68)
  • Spring Boot 整合 Redis,使用 RedisTemplate 客户端

    1.1.1 添加依赖 redis 的依赖: 1.1.2 yml 配置文件 1.1.3 Config 配置文件 1.1.4 使用示例 注入 RedisTemplate,即可操作 Redis,简单示例如下: 1.2.1 RedisTemplate 简介 RedisTemplate 是 Spring Data Redis 项目的一部分,旨在简化在Java应用程序中使用 Redis 的过程。它提供了一组简单的方法,可以在

    2024年02月09日
    浏览(271)
  • Spring Boot 整合 Redis 全面教程:从配置到使用

    Redis 是一种高性能的键值存储数据库,而 Spring Boot 是一个简化了开发过程的 Java 框架。将两者结合,可以轻松地在 Spring Boot 项目中使用 Redis 来实现数据缓存、会话管理和分布式锁等功能。 在 pom.xml 文件中添加 Redis 相关依赖 在 application.properties 或 application.yml 配置文件中添

    2024年02月13日
    浏览(40)
  • Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

    Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。 本篇博客将介绍如何使用Spring-Boot快速搭建一

    2024年01月17日
    浏览(56)
  • 【Redis(8)】Spring Boot整合Redis和Guava,解决缓存穿透、缓存击穿、缓存雪崩等缓存问题

    在缓存技术的挑战及设计方案我们介绍了使用缓存技术可能会遇到的一些问题,那么如何解决这些问题呢? 在构建缓存系统时,Spring Boot和Redis的结合提供了强大的支持,而Guava的 LoadingCache 则为缓存管理带来了便捷的解决方案。下面我将介绍如何通过整合Spring Boot、Redis和Gu

    2024年04月22日
    浏览(48)
  • 【Spring】SpringBoot整合Redis,用Redis实现限流(附Redis解压包)

       📝个人主页:哈__ 期待您的关注  本文介绍SpringBoot整合Redis并且进行接口的限流,文章主要介绍的是一种思想,具体代码还要结合实际。 Redis的解压包我放在了百度网盘上,有需要的可以下载。 Redis-x64-3.0.504 解压码:uhwj 我们在本地解压下载的Redis压缩包,打开解压后的

    2024年04月09日
    浏览(52)
  • Redis(发布订阅、事务、redis整合springboot、集成 Spring Cache)

    目录 一.redis的发布订阅 1、什么 是发布和订阅 2、Redis的发布和订阅 3、发布订阅的代码实现 二.Redis事务 1.事务简介 1、在事务执行之前 如果监听的key的值有变化就不能执行 2、在事务执行之前 如果监听的key的值没有变化就能执行 3、Exec之前就出现错误 4、Exec之后出现的错误

    2024年01月24日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包